在我的项目中,我有2个模型,它们具有指向彼此的ManyToMany字段。在这种情况下,我有选举和候选人。这个想法是,一个选举可以有多个候选人,并且一个候选人也可以是多个选举的一部分(一个“候选人”只有一个人)。
我有以下内容:
project / elections / models.py
from candidates.models import Candidate
class Election(models.Model):
candidates = models.ManyToManyField(Candidate)
...
project / candidates / models.py
from elections.models import Election
elections = models.ManyToManyField(Election)
...
当我尝试运行任何命令(makemigrations,runserver等)时,我在Election和Candidate之间遇到循环依赖关系,从而崩溃。我将不同应用程序中的模型作为编码实践。
我应该:
将两个模型都移动到一个应用程序和一个文件
模型没有相互指向(我该如何实现目标?)
做一些不同的事情
答案 0 :(得分:0)
为避免循环依赖,请不要导入模型,而应使用字符串,并将应用程序名称包含为名称空间
project / elections / models.py
class Election(models.Model):
candidates = models.ManyToManyField('candidates.Candidate')
更新
正如django文档所指出的那样,您只需要在其中一个模型https://docs.djangoproject.com/es/2.1/topics/db/models/#many-to-many-relationships上声明该关系
哪个模型具有ManyToManyField没关系,但是您应该 只能将其放在其中一个模型中-不能同时放在两个模型中。
答案 1 :(得分:0)
您不需要这样做。多对多字段已经是双向的。只需在 one 一侧定义它,然后使用相反的关系即可。