【问题标题】:django model inheritance and admin applicationdjango模型继承和管理应用
【发布时间】:2013-02-27 12:16:24
【问题描述】:

我有一个 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

会有什么问题?

【问题讨论】:

    标签: python django django-grappelli django-tinymce django-filebrowser


    【解决方案1】:

    我认为问题出在您设置 auto_now_add=True 的历史模型中,这将阻止您的日期字段显示在管理员上,请查看有关 Model field reference 的 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)
    

    【讨论】:

      【解决方案2】:

      可能是它的继承问题,试试混合:

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

      【讨论】:

        【解决方案3】:

        如果您添加auto_now=True,此字段将在每次修改时更新。所以你不能编辑它在逻辑上是正常的。

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

        from django.utils.timezone import now
        
        class History(Article, IHasAttachments):
             date = DateField(default=now())
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-14
          • 1970-01-01
          • 1970-01-01
          • 2010-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-24
          相关资源
          最近更新 更多