如何使用Django表单编辑模型数据

我是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关键字参数,并传递你要更新的模型。

因此,如果你具有MyModelMyModelForm(后者必须扩展django.forms.ModelForm),那么你的代码段可能如下所示:

my_record = MyModel.objects.get(id=XXX)

form = MyModelForm(instance=my_record)

然后,当用户通过POST发送回数据时:

form = MyModelForm(request.POST, instance=my_record)

以上是 如何使用Django表单编辑模型数据 的全部内容, 来源链接: utcz.com/qa/410605.html

回到顶部