我有两个型号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?
答案 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
答案 1 :(得分:0)
Django要求在多对多关系表中使用id字段。