Django:如何定义父模型有两个来自同一模型的外键?

0 投票
1 回答
675 浏览
提问于 2025-04-16 00:58

我想在一个父模型里定义两个字段: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

撰写回答