抽象Django模型中的app_label
我在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 个回答
1
注意你链接上加粗的文字:“在开发版本中更改”。如果你没有使用最新的Django开发版本,比如说你在用最新发布的版本1.1,那么你应该使用这个链接来查看文档。那个版本的内容没有提到app_label
,因为那个时候这个概念还没有被引入。