如何直接查询Django为ManyToMany关系创建的表?
Posted
技术标签:
【中文标题】如何直接查询Django为ManyToMany关系创建的表?【英文标题】:How to query directly the table created by Django for a ManyToMany relation? 【发布时间】:2013-01-27 01:16:01 【问题描述】:我有一个模型 MyModel2
,其中一个 ManyToManyField
与另一个模型 MyModel1
相关。
我怎样才能得到对 mymodel1.id, mymodel2.id
,如 Django 为此关系创建的表中所示?我是否必须对此表执行原始 SQL 查询,或者是否可以通过此模型的对象管理器?
class MyModel1(models.Model):
name = models.CharField(max_length=50)
class MyModel2(models.Model):
name = models.CharField(max_length=50)
mymodel1 = models.ManyToManyField(MyModel1)
【问题讨论】:
【参考方案1】:这是多对多字段实例:
MyModel2.mymodel1
这是中间表模型:
MyModel2.mymodel1.through
这是中间模型管理器:
MyModel2.mymodel1.through.objects
这将返回所有中间模型的查询集:
MyModel2.mymodel1.through.objects.all()
django 文档的This part 谈论through
。可以自己制作through
模型,否则会自动生成。
【讨论】:
'ManyToManyDescriptor' 对象没有属性 'though' 你有一个错字;)它通过了!以上是关于如何直接查询Django为ManyToMany关系创建的表?的主要内容,如果未能解决你的问题,请参考以下文章
在 Django 的 ManyToMany 关系中按 id 添加对象
Django:如何从 ManyToMany 迁移到 ForeignKey?