我有一个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
会出现什么问题?
答案 0 :(得分:2)
我认为问题出在你的历史模型中,你设置了auto_now_add = True,这会阻止你在admin上显示你的日期字段,请查看有关Model field reference的django文档:
按照目前的实现,将auto_now或auto_now_add设置为True将导致该字段具有editable = False和blank = True设置。
如果为False,该字段将不会显示在admin或任何其他ModelForm中。
如果您希望它可编辑但也有默认值,请尝试以下方法:
class History(Article, IHasAttachments):
date = DateField(default=datetime.date.today)
答案 1 :(得分:0)
也许是它的继承问题,尝试混合:
答案 2 :(得分:0)
如果您添加auto_now=True
,则此字段将在每次修改时更新。所以它在逻辑上是正常的,你无法编辑它。
如果您想在创建实例时添加自动日期,我建议您:
from django.utils.timezone import now
class History(Article, IHasAttachments):
date = DateField(default=now())