Как мне обновить экземпляр модели Django с помощью request.POST, если POST является вложенным массивом? - PullRequest
6 голосов
/ 16 октября 2010

У меня есть форма, в которой представлены следующие данные:

question[priority] = "3"
question[effort] = "5"
question[question] = "A question"

Эти данные отправляются по адресу URL / questions / 1 / save, где 1 - это question.id.Я хотел бы получить вопрос № 1 и обновить его на основе данных POST.У меня есть кое-что работающее, но я не знаю, как вставить POST в экземпляр.

question = get_object_or_404(Question, pk=id)
question <<< request.POST['question'] # This obviously doesn't work, but is what I'm trying to achieve.
question.save()

Итак, есть ли способ вставить QueryDict в экземпляр модели и обновить каждый изполя с моими данными формы?

Конечно, я мог бы зацикливаться на POST и устанавливать каждое значение отдельно, но это кажется слишком сложным для такого прекрасного языка.

1 Ответ

23 голосов
/ 16 октября 2010

Вы можете использовать ModelForm для этого.Сначала определите ModelForm:

from django import forms

class QuestionForm(forms.ModelForm):
    class Meta:
        model = Question

Затем, на ваш взгляд:

question = Question.objects.get(pk=id)
if request.method == 'POST':
    form = QuestionForm(request.POST, instance=question)
    form.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...