【发布时间】:2020-03-06 17:36:11
【问题描述】:
我有一个模型,它有 2 个独立的 ManyToManyField 关系返回到自身
class Company(models.Model):
parent = models.ManyToManyField("self", through='CompanyParent', through_fields=('company_child', 'company_parent'), related_name='+')
child = models.ManyToManyField("self", through='CompanyParent', through_fields=('company_parent', 'company_child'), related_name='+')
以上在我的本地主机 Django v3.0.2/SQLite 3.8.7.2 上运行良好
要真正发布它,我不得不使用 Django v2.1.15/SQLite 3.7.17,但是发布的版本会抛出以下错误
companies.Company.child: (fields.E332) 多对多字段 中间表不能对称。
companies.Company.parent: (fields.E332) 多对多字段 中间表不能对称。
companies.Company: (models.E003) 该模型有两个多对多 通过中间模型 'companies.CompanyParent' 建立关系。
这里发生了什么?通过在每个模型中添加symmetrical=False 解决了前两个问题,但不知道如何解决最终错误?
【问题讨论】: