我是django的新手,所以对我的新手问题感到抱歉,我 有一个模型,我需要让用户使用django表单或任何其他方式在其中编辑数据。
看上面的图像,我想显示此表单,其中已准备好填充数据,并让用户对其进行更新。 做这个的最好方式是什么 ?
编辑:这是我的views.py代码
def 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)
请帮忙
假设你使用ModelForm,请使用instance关键字参数,并传递你要更新的模型。
ModelForm
instance
因此,如果你具有MyModel和MyModelForm(后者必须扩展django.forms.ModelForm),那么你的代码段可能如下所示:
MyModel
MyModelForm
django.forms.ModelForm
my_record = MyModel.objects.get(id=XXX) form = MyModelForm(instance=my_record)
然后,当用户通过POST发送回数据时:
form = MyModelForm(request.POST, instance=my_record)