【问题标题】:Django Admin error out that a field that is missing from the formDjango Admin 错误指出表单中缺少一个字段
【发布时间】:2011-05-06 01:45:43
【问题描述】:

我的 admin.py 文件出错: 'BaseAdmin.fieldsets[1][1]['fields']' 指的是表单中缺少的字段 'publish_on'。

我的班级看起来像:

class Base(models.Model):
    ...
    publish_on = models.DateTimeField(auto_now=True, db_index=True)
    ...

我的 admin.py 看起来像:

class BaseAdmin(admin.ModelAdmin):
    ...
    fieldsets = [
        ('Dates', {
            'fields': ('publish_on',)
        }),
    ]

如果我用“pass”更改我的管理类,或者只是注册模型类,那么日期时间字段就会显示出来。

【问题讨论】:

  • 您是否使用任何自定义表单?
  • 没有自定义表单。如果我使用我的自定义管理类并且没有定义任何字段集,那么我的所有模型字段都不会显示...再次缺少一些日期时间字段。
  • 在我的 datetimefields 模型中,我有 auto_now=True - 如果我删除它们,那么这些字段将显示。其他人看到这种行为吗?
  • 我正在使用 django 1.2.1 btw - 我将升级到最新版本,看看 auto_now 问题是否仍然存在。
  • stackoverflow.com/questions/3516799/… 的完全相同的副本

标签: django-models django-admin


【解决方案1】:

此错误是由 auto_now 和 auto_now_add 引起的。为了补救这个添加

readonly_fields = ("publish_on",)

在您的 BaseAdmin 中(仅在 django 1.2 和更新版本中)。

【讨论】:

    【解决方案2】:

    如果您确实想使用 auto_now_add,但保留更改日期的可能性,您可以在模型字段中使用 default=datetime.now。这会在管理员中设置默认值,但允许用户更改它,并且它可以内联。

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多