0

我有一个 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(日期)在插入新条目时没有出现在管理表单中。

注意:我正在使用 django-tinymce、djnago-filebrowser 和 django-grappelli

会有什么问题?

4

3 回答 3

2

我认为问题出在您设置 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)
于 2013-02-27T12:44:11.860 回答
0

也许它的继承问题,尝试混合:

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

于 2013-02-27T12:19:34.657 回答
0

如果您添加auto_now=True此字段将在每次修改时更新。因此,您无法对其进行编辑从逻辑上讲是正常的。

如果您想在创建实例时添加自动日期,我建议您这样做:

from django.utils.timezone import now

class History(Article, IHasAttachments):
     date = DateField(default=now())
于 2013-02-27T12:57:18.900 回答