Django:如何定义父模型有两个来自同一模型的外键?
我想在一个父模型里定义两个字段:created_by 和 modified_by,这两个字段会作为子模型的公共字段。
class ExtendedModel(models.Model):
created_by = models.ForeignKey(User,related_name='r_created_by')
modified_by = models.ForeignKey(User,related_name='r_modified_by')
class Meta:
abstract = True
class ChildModel1(ExtendedModel):
pass
class ChildModel2(ExtendedModel):
pass
这样做会出错,因为 ChildModel1 和 ChildModel2 在它们的 created_by 和 modified_by 字段上有名称冲突。
1 个回答
3
Django的文档里有说明怎么解决这个问题:http://docs.djangoproject.com/en/dev/topics/db/models/#abstract-related-name
class ExtendedModel(models.Model):
created_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_created_by')
modified_by = models.ForeignKey(User,related_name='"%(app_label)s_%(class)s_modified_by')
class Meta:
abstract = True
class ChildModel1(ExtendedModel):
pass
class ChildModel2(ExtendedModel):
pass