考虑到具有两种多对多关系的下列模式:
class Child(models.Model):
name = models.CharField(max_length=80)
class Foo(models.Model):
bar = models.ManyToManyField(Child)
baz = models.ManyToManyField(Child)
产生了错误:
accounts.foo: Accessor for m2m field 'bar' clashes with related m2m field 'Child.foo_set'. Add a related_name argument to the definition for 'bar'.
accounts.foo: Accessor for m2m field 'baz' clashes with related m2m field 'Child.foo_set'. Add a related_name argument to the definition for 'baz'.
我想你应该把这两个领域_姓名:
class Child(models.Model):
name = models.CharField(max_length=80)
class Foo(models.Model):
bar = models.ManyToManyField(Child, related_name="bar")
baz = models.ManyToManyField(Child, related_name="baz")
如果您没有给出相关的名称,那么它将尝试创建相同的访问器名称
没有仔细阅读Django的文档。这里说:
如果有多个ManyToManyField指向相同的模型并想要抑制向后关系,请将每个related_name设置为以“+”结尾的唯一值。