添加其他对象并收到错误MultiValueDictKeyError(Django admin)

时间:2011-09-25 05:55:53

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

我的关系如下:

class Question(models.Model):
   qid = models.PositiveIntegerField(primary_key=True)
   content = models.CharField(max_length=128)

class Answer(models.Model):
   answerid = models.PositiveIntegerField(primary_key=True)
   content = models.CharField(max_length=128)
   question = models.ForeignKey(Question)


class AnswerInline(admin.StackedInline):
   model = Answer
   readonly_fields = ('answerid',)
   extra = 0

class QuestionAdmin(admin.ModelAdmin):    
    inlines = [AnswerInline]
    exclude = ('id')
    list_display = ('content',)

admin.site.register(Question,QuestionAdmin)

假设我有一个问题,即A,我对此问题没有任何答案。 所以,当我添加A的答案时。没关系。但是,我尝试添加另一个答案,系统输出错误MultiValueDictKeyError:

  

在QueryDict中找不到“密钥'oam_answer_set-0-answerid':...

因为'qid'和'answerid'都不是AutoField。因此,当我保存对象时,django admin无法在数据库中插入新行(缺少主键)。

AutoField被声明为IntegerField。但是,我希望主键的字段类型是PositiveIntegerField。出于这个原因,我如何自定义AutoField?

由于

1 个答案:

答案 0 :(得分:0)

尝试使用管理员注册答案模型。

...
admin.site.register(Answer)

位于admin.py的底部。您正在使用从ModelAdmin继承的内联字段(特别是readonly_fields),但您可能没有注册该模型。