Django Rest框架和许多具有Through的字段

2024-05-29 10:49:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Training模型和一个Drill模型,它们之间有很多种关系。我遇到的问题是,Django在默认情况下强制执行唯一性,在同一个Training上不可能有重复的钻取。在

为了解决这个问题,我可以在设置manytomy关系时使用through=参数,但是这会导致Django Rest框架出现很多问题。在

有别的办法吗?我是否必须创建一个through=模型,以避免在M2M关系上强制执行唯一性?

我在DRF中遇到的问题是,我还需要为所创建的新模型提供一个中间序列化程序。当我想发送Drill数据时,这会导致问题,因为它会验证它并剥离所有Drill数据,因为它需要一个TrainingDrill(中间模型),因为需要自定义序列化程序。在

这个小小的变化真的很快就需要大量额外的改变。一定有更好的办法。在


Tags: 数据django模型程序rest参数序列化关系
1条回答
网友
1楼 · 发布于 2024-05-29 10:49:03

回答您关于通过模型的问题:

直通模型通常用于向多对多关系添加更多信息(例如,如果您需要添加某种排序顺序,或关系形成的日期,等等,我相信您知道这一点)。在

不要使用through=来实现唯一性:

至于走这条路以避免独特性,我认为这不是正确的思考方式。基于Django自己的例子here 您将看到,可以将相同的实例多次添加到m2m关系中:

>>> a2 = Article(headline='NASA uses Python')
>>> a2.save()
>>> a2.publications.add(p1, p2)
>>> a2.publications.add(p3)
Adding a second time is OK:
>>> a2.publications.add(p3)

多对多的关系可以是任意一方(通常不是两方),有一种方法:

^{pr2}$

希望这有帮助

相关问题 更多 >

    热门问题