我有以下简化的模型结构:
#common/models.py
class CLDate(models.Model):
active = models.BooleanField(default=True)
last_modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
#br/models.py
class Dokument(CLDate):
user = models.ForeignKey(User)
class Entity(CLDate):
dokument = models.ForeignKey(Dokument)
。这两个类都继承自 CLDate,并且它们之间有 OneToMany 关系。当我尝试迁移时,出现以下错误:
python manage.py makemigrations
SystemCheckError: System check identified some issues:
ERRORS:
br.Entity.dokument: (models.E006) The field 'dokument' clashes with the
field 'dokument' from model 'common.cldate'.
我真的不明白为什么这个结构对 Django 来说是一个问题,因此实体是一个与文档完全不同的对象。谁能解释一下为什么,我该如何用这个结构解决它?因此,两者都应该继承自 CLDate,并且来自 br 应用程序的两个模型之间应该存在这种关系。
我也尝试删除所有迁移文件,并这样解决,但还是一样。 Runserver 也给出了这个错误。
姜戈:1.11.2
蟒蛇:3.4.2
德班:8.8
.
Thanks.
如果我在实体模型中重命名文档属性名称,它就可以正常工作。
我也几乎与以前(在以前的 Django 版本中)工作的布局几乎相同。
由于您使用的是多表继承,Django 会创建一个隐式的一对一字段Dokument
to CLDate
。反向关系dokument
from CLDate
to Dokument
与你发生冲突Entity.dokument
field.
如果您不想重命名您的Entity.dokument
字段,那么您的另一个选择是显式定义父链接字段 https://docs.djangoproject.com/en/1.11/topics/db/models/#specifying-the-parent-link-field from Dokument
to CLDate
并设置related_name
.
class Dokument(CLDate):
cl_date = models.OneToOneField(CLDate, parent_link=True, related_name='related_dokument')
user = models.ForeignKey(User)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)