编辑内联管理对象时的MultiValueDictKeyError

Mae*_*orm 5 django django-admin

我正在使用django网站,Django版本1.6.1中的ManyToOne关系设计一个简单的MCQ应用程序.我有一个内联管理表单,据说允许我从同一个变更表中添加/编辑给定问题的答案.但是,如果在将答案保存一次后,我无法编辑/添加来自同一表单的答案并获得MultiValueDictKeyError.我的模特是:

class SBA (models.Model):
question = models.TextField(blank=False)
system = models.CharField(max_length=3, choices=pacscon.System.which_system)
case = models.ForeignKey('pacscon.Patient')
created = models.DateField(auto_now_add=True)
reference = models.TextField(blank=True)

def __unicode__(self):
    return self.question


class Answer(models.Model):
id = models.AutoField(primary_key=True)
body = models.TextField()
correct = models.BooleanField(default=False)
sba = models.ForeignKey(SBA, null=True)

def __unicode__(self):
    return self.body
Run Code Online (Sandbox Code Playgroud)

admin.py看起来像这样:

from models import Answer, SBA, Mnemonic
#from django import forms
from django.contrib import admin


class AnswerInline(admin.StackedInline):
    model = Answer
    extra = 2

class SBAAdmin(admin.ModelAdmin):
        fieldsets = (
            (None, {
                'fields': ('question', 'system', 'case', 'reference')
            }),
        )
        inlines = [
            AnswerInline,
        ]
        readonly_fields = ('created',)

admin.site.register(SBA, SBAAdmin)
admin.site.register(Answer)
admin.site.register(Mnemonic)
Run Code Online (Sandbox Code Playgroud)

并且错误消息是:

MultiValueDictKeyError at /admin/knowledge/sba/1/


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper
  432.                 return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  99.                     response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  52.         response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner
  198.             return view(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper
  29.             return bound_func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view
  99.                     response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func
  25.                 return func(self, *args2, **kwargs2)
File "/usr/local/lib/python2.7/dist-packages/django/db/transaction.py" in inner
  339.                 return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in change_view
  1229.             if all_valid(formsets) and form_validated:
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in all_valid
  415.         if not formset.is_valid():
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in is_valid
  292.         err = self.errors
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in errors
  267.             self.full_clean()
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in full_clean
  314.             form = self.forms[i]
File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py" in __get__
  49.         res = instance.__dict__[self.func.__name__] = self.func(instance)
File "/usr/local/lib/python2.7/dist-packages/django/forms/formsets.py" in forms
  133.         forms = [self._construct_form(i) for i in xrange(self.total_form_count())]
File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in _construct_form
  848.         form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py" in _construct_form
  564.             pk = self.data[pk_key]
File "/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py" in __getitem__
  301.             raise MultiValueDictKeyError(repr(key))

Exception Type: MultiValueDictKeyError at /admin/knowledge/sba/1/
Exception Value: "u'answer_set-0-id'"
Run Code Online (Sandbox Code Playgroud)

我在google和stackoverflow上搜索了类似的请求,我的django包完全是最新的(包括管理内联模板,如其他一些答案所示).将不胜感激任何帮助.谢谢

PS这几乎肯定是一个错误,因为我可以在官方django"民意调查"教程中复制问题,该教程使用类似的ManyToOne关系模型.

小智 1

我有类似的问题,通过更新 django-grappelli 解决了。如果您没有使用它,请检查您的软件包,也许您会发现哪些内容会影响管理站点的工作。

pip freeze | grep django-将向您显示当前软件包的版本