0

我有两个模型 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?

4

2 回答 2

0

如果您需要删除 2 个模型之间的一个实例的关系,您可以通过访问关系表的 Manager 来执行此操作。可以通过MyModel.relations.throughso 访问 m2m 关系表以删除关系:

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

参考:

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

信用:如何从多对多关系中删除所有关系?

于 2013-10-29T23:05:04.810 回答
0

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

于 2013-10-30T00:39:41.823 回答