如何使用 Django 表单编辑模型数据 [英] how to edit model data using django forms
问题描述
我是 Django 新手,所以很抱歉我的新手问题
我有一个模型,我需要让用户使用 Django 表单或任何其他方式编辑其中的数据.
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.
看上面的图片,我想显示这个表格已经填充了数据并让用户更新它.
这样做的最佳方法是什么?
这是我的 views.py 代码
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 code
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
关键字参数,并传递您使用的模型更新中.
Assuming you are using a ModelForm
, use the instance
keyword argument, and pass the model you are updating.
因此,如果您有 MyModel
和 MyModelForm
(后者必须扩展 django.forms.ModelForm
),那么您的代码片段可能看起来像:
So, if you have MyModel
and MyModelForm
(the latter of which must extend django.forms.ModelForm
), then your code snippet might look like:
my_record = MyModel.objects.get(id=XXX)
form = MyModelForm(instance=my_record)
然后,当用户通过POST发回数据时:
And then, when the user sends back data by POST:
form = MyModelForm(request.POST, instance=my_record)
顺便说一下,ModelForm
的文档在这里:http://docs.djangoproject.com/en/1.8/topics/forms/modelforms/
Incidentally, the documentation for ModelForm
is here: http://docs.djangoproject.com/en/1.8/topics/forms/modelforms/
这篇关于如何使用 Django 表单编辑模型数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!