当前位置: 首页 > 面试题库 >

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

呼延升
2023-03-14
问题内容

我是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)


 类似资料:
  • 问题内容: 我已经做了一个不错的表格,并使用了一个复杂的“添加”函数来处理它。像这样开始 现在,我真的不想重复该方法中的所有功能,因此我想可以使用完全相同的模板,甚至可以id在表单中添加一个字段,以便该函数知道其正在编辑的内容。但这有几个问题 我将在哪里放置功能?之所以必须在此之后,是因为这是创建文章的地方,但它甚至永远都不会达到那个目的,因为由于唯一的约束,表单是无效的(除非用户编辑了所有内容)

  • 我在MVC视图中有一个显示员工详细信息的表。我想添加一个编辑功能,但不是在新页面中打开它,而是使用引导模式来显示它。(http://twitter.github.com/bootstrap/javascript.html#modals) 我不认为我必须使用ajax,因为数据已经在页面上可用。我想我需要一些jquery或razor代码来将选定的员工数据传递给引导模式,并将其弹出在同一屏幕上。下面是我

  • 我有一个有4列的JTable。JTable单元格是可编辑的,并且包含一个AbstractTableModel。我想在第一个单元格将要进入编辑模式时显示一个带有列表的对话框(我已经很好地完成了这一点)。从列表中选择数据后,它返回一个对象(我可以访问该对象)。但是,由于编辑器是JTextField,它将显示来自对象的一个子值(我也这样做过)。但是,当单元格将其位置更改为另一个单元格时,JTable将使

  • 问题内容: 可能是一个新手问题,请耐心等待。 我有一个Django表单,可以编辑模型的特定实例。为了知道正在编辑哪个对象,我有一个包含对象ID的隐藏字段以及包含ID的URL。 第一个问题:在隐藏字段中包含对象的ID是否正确? 我(可能是毫无根据的)担心仅将其作为URL的一部分,然后有人可以打开一个对象ID的页面,将表单提交给另一个对象,然后该对象将被覆盖。这就是为什么我要使用隐藏字段的原因。 将I

  • 问题内容: 我在MySQL数据库中有几个临时表,它们共享相同的架构并具有动态名称。我将如何使用Django与这些表进行交互?一个模型可以从多个表中提取数据吗? 问题答案: 我相信,你可以创建一个工厂函数,该函数将通过动态db_table返回你的模型。 编辑:每次调用此函数时,Django不会创建类属性的新实例。为它创建一个新实例取决于类的名称(Django必须将其缓存在某个地方)。元类可用于在运行

  • 问题内容: 我正在尝试为我的一个模型编写函数,以便可以通过执行以下操作创建对象: 当我编写模型时,我有: 这样可以正常工作,我可以将对象保存到数据库中,但是当我这样做时,除非我拿出函数,否则它不会拉任何东西。有任何想法吗? 问题答案: 依靠Django的内置功能并传递命名参数将是最简单的方法。 但是,如果您打算保存一些击键,建议您向类添加一个静态便捷方法,而不要弄乱初始化程序。