app_label в абстрактной модели Django - PullRequest
3 голосов
/ 03 мая 2010

Я пытаюсь заставить абстрактную модель работать в Django, и я ударился о кирпичную стену, пытаясь установить 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 голос
/ 03 мая 2010

Обратите внимание на жирный текст на вашей ссылке: «Изменено в версии для разработки». Если вы не используете недавнюю проверку ствола Django - например, вы используете последнюю выпущенную версию 1.1 - вы должны использовать эту ссылку для документации. В этой версии текста нет ссылки на app_label, поскольку она еще не была введена.

...