Django在抽象基类中创建和修改

时间:2016-12-19 20:40:16

标签: django django-models foreign-keys abstract-class

我想创建一个其他模型继承来跟踪一些基本信息的抽象基类(Created_Date,Mod_date,Created_by,Mod_by等),这是我想要的一个例子:

class MetaDataModel(models.Model):
    added_by = models.ForeignKey(settings.AUTH_USER_MODEL, )
    modified_by = models.ForeignKey(settings.AUTH_USER_MODEL)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    active = models.BooleanField(default=True)

    class Meta:
        abstract = True

但是,当我在多个其他模型中使用此类时,我收到一条错误告诉我:

  

takeoffs.Takeoff.added_by :( fields.E304)反向访问器   ' Takeoff.added_by'与反向访问者发生冲突   ' InputTakeoffItem.added_by'

     

提示:在' Takeoff.added_by'的定义中添加或更改related_name参数。或者' InputTakeoffItem.added_by'。

在所有模型中实施。

如何创建ABC以跟踪创建和上次修改项目的人员?

1 个答案:

答案 0 :(得分:2)

很抱歉,经过几天的挣扎,我实际上在Django的文档中找到了答案。您可以将两个变量(?)添加到related_name字段:

  • %(app_label)s
  • %(类)类

这将使related_name从继承它的每个类中唯一。

此处的文档:https://docs.djangoproject.com/en/1.10/topics/db/models/#abstract-related-name