【问题标题】:django admin keyerror: key not found in formdjango admin keyerror:在表单中找不到密钥
【发布时间】:2013-10-17 05:18:49
【问题描述】:

我在 django admin 中的表单有一个奇怪的问题。

我已经定义了我的表单、模型和模型管理员:

import datetime
from cmsplugin_news.admin import NewsAdmin as OldNewsAdmin
from django import forms
from django.db import models
from news.models import News


class NewNewsForm(forms.ModelForm):
    class Meta:
        model = News
        fields = ('title', 'is_published', 'pub_date', 'is_featured')


class NewsAdmin(OldNewsAdmin ):
    fields = ('title', 'is_published', 'pub_date', 'is_featured')
    form = NewNewsForm


class News(models.Model):
    title = models.CharField(_('Title'), max_length=255)
    is_published = models.BooleanField(_('Published'), default=False)
    pub_date = models.DateTimeField(_('Publication date'), default=datetime.datetime.now)
    is_featured = models.BooleanField(_('Featured'), default=False)

admin.site.register(News, NewsAdmin)

模型中的所有字段似乎也出现在管理和表单中。但是当我前往 /en/admin/news/news/4/ 时,我收到以下 KeyError: key "is_featured" not found in form

这里是完整的堆栈跟踪https://dpaste.de/9yV3

任何帮助将不胜感激。谢谢!

【问题讨论】:

标签: python django django-models django-forms django-admin


【解决方案1】:

似乎与其他财产发生了冲突。更改名称使其生效。

【讨论】:

  • 对于其他可能无缘无故收到此错误的人,当我在我的管理员中使用 get_fieldsets 时,它出现在我身上。我让管理员完美地工作,然后尝试将 M2M 字段从内联移动到字段集的字段中。但它没有告诉我一个适当的错误,而是给了我这个 keyerror(在 Form 中找不到 Key X)。实际问题是“无法在管理员中使用具有直通模型的ManyToManyField”:code.djangoproject.com/ticket/12203希望这可以节省一些时间!
  • 好吧,因为我刚刚再次看到自己的评论,所以我想我应该补充一点,它适用于 Django 1.8。不确定新版本。
  • 我在 1.4 以上的 django 版本中使用了带有“through”模型的 M2M 字段,在 django admin 中从未遇到任何问题。除了我原来的帖子中的那个。它看起来不像“无法在管理员中使用带有直通模型的 ManyToManyField”
猜你喜欢
  • 2017-02-01
  • 2017-03-15
  • 1970-01-01
  • 2017-10-21
  • 2011-05-09
  • 2020-06-07
  • 2020-02-25
  • 2017-11-20
  • 2017-10-08
相关资源
最近更新 更多