这一次我认为不是我愚蠢,而是真正的冲突。我有以下代码(简化):
from django.db import models
class Alpha(models.Model):
relation = models.ForeignKey('Delta', related_name = 'reverse_relation', blank = True, null = True)
class Meta:
abstract = True
class Beta(Alpha):
pass
class Gamma(Alpha):
pass
class Delta(models.Model):
pass
问题是 Delta.reverse_relation 可以引用 Beta 的实例或 Gamma 的实例。我会以某种方式必须提供多个相关名称值(或一个取决于类名的值)。我认为问题很清楚但要完整,错误(运行同步数据库时):app.beta:字段“关系”的访问器冲突与相关字段“Delta.reverse_relation”。将related_name 参数添加到“关系”的定义中。
app.beta:字段“relation”的反向查询名称与相关字段“Delta.reverse_relation”冲突。将related_name 参数添加到“关系”的定义中。
app.gamma:字段“relation”的访问器与相关字段“Delta.reverse_relation”发生冲突。在 ' 的定义中添加一个 related_name 参数
app.gamma:字段“relation”的反向查询名称与相关字段“Delta.reverse_relation”冲突。将related_name 参数添加到“关系”的定义中。
是否有可能将 ForeignKey 放在父 Alpha 中,或者是将这段代码剪切粘贴到 Beta 和 Gamma 的唯一方法?我不喜欢这样做,因为如果我不能在父级中定义所有子级共享的字段的一半,它就会破坏继承点。
非常感谢任何帮助!
(如果有人可以评论为什么错误消息不在代码框中,我会解决这个问题。)