Добавить другой объект и получить ошибку MultiValueDictKeyError (администратор Django) - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть следующие отношения:

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)

Предположим, у меня есть вопрос, а именно А, и у меня пока нет ответа на этот вопрос. Итак, когда я добавляю ответ А. Это нормально. Тем не менее, я пытаюсь добавить другой ответ, система выдает ошибку MultiValueDictKeyError:

"Ключ" oam_answer_set-0-answerid "не найден в QueryDict: ...

Потому что и 'qid', и 'answerid' не являются автополем. Поэтому, когда я сохраняю объект, администратор django не может вставить новую строку в базу данных (отсутствует первичный ключ).

AutoField объявляется как IntegerField. Тем не менее, я хотел бы, чтобы тип поля первичного ключа был PositiveIntegerField. По этой причине, как я могу настроить AutoField?

Спасибо

1 Ответ

0 голосов
/ 25 сентября 2011

Попробуйте зарегистрировать модель ответа у администратора, т.е.

...
admin.site.register(Answer)

внизу admin.py.Вы используете встроенные поля (в частности readonly_fields), которые унаследованы от ModelAdmin, но вы, возможно, не зарегистрировали эту модель.

...