我有一个Training
模型和一个Drill
模型,它们之间有很多种关系。我遇到的问题是,Django在默认情况下强制执行唯一性,在同一个Training
上不可能有重复的钻取。在
为了解决这个问题,我可以在设置manytomy关系时使用through=
参数,但是这会导致Django Rest框架出现很多问题。在
有别的办法吗?我是否必须创建一个through=
模型,以避免在M2M关系上强制执行唯一性?
我在DRF中遇到的问题是,我还需要为所创建的新模型提供一个中间序列化程序。当我想发送Drill
数据时,这会导致问题,因为它会验证它并剥离所有Drill
数据,因为它需要一个TrainingDrill
(中间模型),因为需要自定义序列化程序。在
这个小小的变化真的很快就需要大量额外的改变。一定有更好的办法。在
回答您关于通过模型的问题:
直通模型通常用于向多对多关系添加更多信息(例如,如果您需要添加某种排序顺序,或关系形成的日期,等等,我相信您知道这一点)。在
不要使用through=来实现唯一性:
至于走这条路以避免独特性,我认为这不是正确的思考方式。基于Django自己的例子here 您将看到,可以将相同的实例多次添加到m2m关系中:
多对多的关系可以是任意一方(通常不是两方),有一种方法:
^{pr2}$希望这有帮助
相关问题 更多 >
编程相关推荐