app_label在一个抽象的Django模型中

时间:2010-05-03 17:13:26

标签: python django django-models

我正在尝试在Django中运行一个抽象模型,我试图根据建议设置相关名称来打砖墙:http://docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-name

这就是我的抽象模型:

class CommonModel(models.Model):

    created_on = models.DateTimeField(editable=False)
    creared_by = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_created", editable=False)
    updated_on = models.DateTimeField(editable=False)
    updated_by = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_updated", editable=False)

    def save(self):
        if not self.id:
            self.created_on = datetime.now()
            self.created_by = user.id

        self.updated_on = datetime.now()
        self.updated_by = user.id
        super(CommonModel, self).save()

    class Meta:
        abstract = True

我的常见模型位于[project_root] /models.py中。它是此模型的父对象,位于名为Feedback [project_root] /feedback/models.py的应用程序中:

from django.db import models
from mediasharks.models import CommonModel

class Feedback(CommonModel):
    message = models.CharField(max_length=255)
    request_uri = models.CharField(max_length=255)
    domain = models.CharField(max_length=255)
    feedback_type = models.IntegerField()

基本上我正在尝试建立一个通用模型,以便我能够始终知道何时以及由谁创建数据库条目。

当我运行“python manage.py validate”时,我收到以下错误消息:KeyError:'app_label'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

请注意链接上的粗体文字:“已更改开发版本”。如果您没有使用最近结帐的Django主干 - 例如,您使用的是最新发布的版本1.1 - 您应该使用this link作为文档。该版本的文本没有提及app_label,因为它尚未被引入。