这次我认为这不是我愚蠢,而是一个实际的冲突。我有以下代码(简化版):使用继承和外键时Django syncdb冲突related_name
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实例。我会不知何故必须提供多个related_name值(或者取决于类名称)。我认为问题很明显,但要完整,错误(运行syncdb时): app.beta:字段'关系'的访问器与相关字段“Delta.reverse_relation”发生冲突。将relation_name参数添加到“关系”的定义中。
app.beta:字段'关系'的反向查询名称与相关字段'Delta.reverse_relation'发生冲突。将relation_name参数添加到“关系”的定义中。
app.gamma:字段'关系'的访问者与相关字段'Delta.reverse_relation'发生冲突。将relation_name参数添加到“关系”的定义中。
app.gamma:字段'relation'的反向查询名称与相关字段'Delta.reverse_relation'冲突。将relation_name参数添加到“关系”的定义中。
是否有可能将ForeignKey放置在父Alpha中,还是将此代码剪切粘贴到Beta和Gamma的唯一方法?我更喜欢不这样做,因为如果我不能在父母的一半中定义所有孩子共享的字段,它就会失败继承点。
任何帮助都非常赞赏!
(如果任何人都可以用,为什么错误信息是不是在代码框中发表评论我要解决这个问题。)
发现我自己再次通过谷歌的问题。发生超过我想承认的事情。 – Mark 2012-12-18 00:29:16