2010-05-03 111 views
2

我试图让一个抽象的模型在Django工作,我撞了南墙试图设置每个推荐这里的related_name:http://docs.djangoproject.com/en/dev/topics/db/models/#be-careful-with-related-nameapp_label在一个抽象的Django模型

这是我的抽象模型看起来像:

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中。正是这种模式,它坐落在一个应用程序称为反馈的父对象[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() 

基本上我试图建立一个共同的模式,这样我会始终能够分辨数据库条目何时创建以及由谁创建。

当我运行“蟒蛇manage.py验证”我收到此错误信息:KeyError异常:“app_label”

我失去了一些东西在这里?

回答

1

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

+0

啊,谢谢你,丹尼尔。下次我会更仔细地阅读文档。 – rayan 2010-05-03 17:48:29