Наследование модели django и приложение администратора

У меня есть приложение django, в котором я хочу использовать наследование модели. Приложение содержит один класс супер модель Article и вот его код

class Article(models.Model):
    english_title = CharField(max_length=200)
    arabic_title = CharField(max_length=200)
    english_body = HTMLField()
    arabic_body = HTMLField()
    enabled = BooleanField()

    def __unicode__(self):
        return self.english_title

    def get_body(self, locale):
        if locale == "ar" :
            return self.arabic_body
        else:
            return self.english_body

    def get_title(self, locale):
        if locale == "ar" :
            return self.arabic_title
        else:
            return self.english_title

и есть дочерний класс под названием History который расширяет этот класс и вот его код

class History(Article, IHasAttachments):
     date = DateField(auto_now_add=True)

Моя проблема возникает в приложении администратора, где dateField (date) в модели History не отображается в форме администратора при вставке новой записи.

ПРИМЕЧАНИЕ: я использую django-tinymce, djnago-filebrowser и django-grappelli

В чем будет проблема?

3 ответа

Решение

Я думаю, что проблема в вашей модели истории, которую вы установили auto_now_add=True, что предотвратит отображение поля даты в админке, пожалуйста, проверьте документ django о ссылке на поле модели:

Как в настоящее время реализовано, установка auto_now или auto_now_add в True приведет к тому, что поле будет иметь значение editable=False и blank=True.

А про Field.editable:

Если False, поле не будет отображаться в admin или любой другой ModelForm.

Если вы хотите, чтобы он редактировался, но также имел значение по умолчанию, попробуйте это:

class History(Article, IHasAttachments):
    date = DateField(default=datetime.date.today)

Если вы добавите auto_now=True это поле будет обновляться при каждой модификации. Таким образом, это будет логически нормально, вы не можете редактировать его.

Если вы хотите добавить автоматическую дату при создании экземпляра, я предлагаю вам это:

from django.utils.timezone import now

class History(Article, IHasAttachments):
     date = DateField(default=now())

Возможно, проблема наследования, попробуйте с микшированием:

http://www.linuxjournal.com/node/4540/print

Другие вопросы по тегам