Mam formularz, który przekazuje następujące dane:Jak zaktualizować instancję modelu Django za pomocą żądania.POST, jeśli POST jest tablicą zagnieżdżoną?
question[priority] = "3"
question[effort] = "5"
question[question] = "A question"
Dane te są przedkładane URL/pytania/1/Zachowaj gdzie 1
jest question.id
. Chciałbym dostać pytanie nr 1 i zaktualizować je na podstawie danych POST. Niektóre z nich działają, ale nie wiem, jak wprowadzić test POST do instancji.
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()
Więc, czy jest tak, aby skłonić QueryDict do instancji modelu i zaktualizować każdego z pól z moich danych formularza?
Oczywiście, mógłbym przelecieć przez POST i ustawić każdą wartość indywidualnie, ale to wydaje się zbyt skomplikowane dla tak pięknego języka.
Thanks Ars, i 'request.POST' jest wystarczająco inteligentny, aby ignorować inne rzeczy tam tylko aktualizację' request.POST [pytanie] "część tego? W szczególności nie chcę, aby myślenie 'user [email]' miało cokolwiek wspólnego z obiektem 'Pytanie'. –
@ Mark: ModelForm porównuje nazwy pól modelu i pól formularzy, a następnie je przenosi. Tak więc, jeśli twój model zapytania i twoja sieć tworzą pole o nazwie pytanie, zostanie ono przypisane. Jeśli formularz zawiera pole o nazwie e-mail, ale nie ma takiego pola w modelu Qeustion, nie zostanie ono przypisane. Zobacz powiązaną dokumentację, aby uzyskać większą kontrolę nad tym, jeśli tego potrzebujesz (na przykład możesz wykluczyć nazwy pól). – ars