更新时间:2023-02-15 14:35:58
假设您正在使用 ModelForm
,请使用实例
关键字参数,并传递您正在更新的模型。
所以,如果你有 MyModel
和 MyModelForm
(后者必须扩展 django.forms.ModelForm
),那么您的代码段可能如下所示:
my_record = MyModel.objects.get(id = XXX)
pre>
form = MyModelForm(instance = my_record)然后,用户通过POST发回数据:
form = MyModelForm(request.POST,instance = my_record)
顺便提一下,
ModelForm
的文档在这里: http://docs.djangoproject.com/en/1.8/topics/forms/modelforms/ a>i'm new to django so i'm sorry for my newbie question
i have a model and i need to let user edit data inside it using django forms or any other way.look at the image above , i want to show this form ready populated with the data and let user update it.
what is the best way to do this ?
EDIT : here is my views.py codedef exam_Edit(request,examName,number=0): numner = int(number) number = int(number) questionNo = int(numner) Myexam = models.Exam.objects.get(name = examName) QuestionsAll = models.Question.objects.filter(exam = Myexam) myQeustion = Question.objects.filter(exam = Myexam)[nextQuestion] answer1 = models.Asnwers.objects.filter(question=myQeustion)[0] answer2 = models.Asnwers.objects.filter(question=myQeustion)[1] answer3 = models.Asnwers.objects.filter(question=myQeustion)[2] answer4 = models.Asnwers.objects.filter(question=myQeustion)[3] # HERE IS MY PROBLEM : the line below creates a form with a data but it doesn't save it to the save object form = QuestionsEditForm(initial = {'questionText':myQeustion.__unicode__() , 'firstChoiceText':answer1.__unicode__(),'secondChoiceText':answer2.__unicode__(),'thirdChoiceText':answer3.__unicode__(),'forthChoiceText':answer4.__unicode__()}) if request.method =='POST': #if post if form.is_valid(): questionText = form.cleaned_data['questionText'] Myexam = Exam.objects.get(name = examName) myQeustion.questionText = form.cleaned_data['questionText'] answer1.answerText = form.cleaned_data['firstChoiceText'] answer1.save() answer2.answerText = form.cleaned_data['secondChoiceText'] answer2.save() answer3.answerText = form.cleaned_data['thirdChoiceText'] answer3.save() answer4.answerText = form.cleaned_data['forthChoiceText'] answer4.save() variables = RequestContext(request, {'form':form,'examName':examName,'questionNo':str(nextQuestion)}) return render_to_response('exam_edit.html',variables)
please help
Assuming you are using a
ModelForm
, use theinstance
keyword argument, and pass the model you are updating.So, if you have
MyModel
andMyModelForm
(the latter of which must extenddjango.forms.ModelForm
), then your code snippet might look like:my_record = MyModel.objects.get(id=XXX) form = MyModelForm(instance=my_record)
And then, when the user sends back data by POST:
form = MyModelForm(request.POST, instance=my_record)
Incidentally, the documentation for
ModelForm
is here: http://docs.djangoproject.com/en/1.8/topics/forms/modelforms/