Django多对多的关系

时间:2013-10-29 22:58:06

标签: python django django-models

我有两个型号A和B,其中

class B(Model):
   As = models.ManyToManyField(A)

然后我做以下

a_instance.b_set.clear()

为了删除从a_instance到任何b_instances的所有引用。但后来我遇到了以下错误:

Database Error: column a_b/id doesn not exists
Line 1:  SELECT "a_b"."id",

这是事实,我的中间表a_b在多对多关系中(在A和B之间)没有名为id的字段。它还有另外两个字段,而不是a_id和b_id。

那么有谁知道如何强制Django使用a_id和b_id而不仅仅是id?

2 个答案:

答案 0 :(得分:0)

如果您需要删除两个模型之间的一个实例的关系,您可以通过访问关系表的管理器来实现。可以通过MyModel.relations.through访问m2m关系表,以便删除关系:

B.As.through.objects.filter(a=a_instance).delete()

参考:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through

信用:How to remove all relations from manytomany?

答案 1 :(得分:0)

Django要求在多对多关系表中使用id字段。