2011-09-25 92 views
0

我有一个关系如下:添加其他对象,并收到错误MultiValueDictKeyError(Django管理)

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:因为这两个“QID”和“answerid”是不是一个下拉列表AutoField

"Key 'oam_answer_set-0-answerid' not found in QueryDict:...

。所以,当我保存一个对象时,django admin不能在数据库中插入新行(缺少主键)。

AutoField被声明为IntegerField。不过,我希望主键的字段类型是PositiveIntegerField。出于这个原因,我怎样才能自定义一个AutoField?

感谢

回答

0

尝试注册与管理即

... 
admin.site.register(Answer) 

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

+0

谢谢pastylegs。 显然,我有这样一行:'admin.site.register(Answer,QuestionAdmin)' 。我知道那个错误的原因。 'qid'和'answerid'不是autoField。所以,当我保存一个对象时,django admin不能在数据库中插入新行(缺少主键)。出于这个原因,我如何定制一个autoField? –