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

如何从Django中的编辑表单更新对象?

许彦
2023-03-14
问题内容

可能是一个新手问题,请耐心等待。

我有一个Django表单,可以编辑模型的特定实例。为了知道正在编辑哪个对象,我有一个包含对象ID的隐藏字段以及包含ID的URL。

第一个问题:在隐藏字段中包含对象的ID是否正确?

我(可能是毫无根据的)担心仅将其作为URL的一部分,然后有人可以打开一个对象ID的页面,将表单提交给另一个对象,然后该对象将被覆盖。这就是为什么我要使用隐藏字段的原因。

将ID存储在隐藏字段中的问题在于,在验证表单时,Django抱怨对象显然没有唯一ID。

第二个问题:如果表单中包含唯一字段,那么如何告诉Django忽略该键已经存在的事实,以便更新对象?


问题答案:

你为什么不只使用ModelForm?

# forms.py
# ...
class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel

# views.py
# ...    
def my_view(request, id): 
    instance = get_object_or_404(MyModel, id=id)
    form = MyForm(request.POST or None, instance=instance)
    if form.is_valid():
        form.save()
        return redirect('next_view')
    return render(request, 'my_template.html', {'form': form}) 


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

  • 问题内容: 我是django的新手,所以对我的新手问题感到抱歉,我 有一个模型,我需要让用户使用django表单或任何其他方式在其中编辑数据。 看上面的图像,我想显示此表单,其中已准备好填充数据,并让用户对其进行更新。 做这个的最好方式是什么 ? 编辑:这是我的views.py代码 请帮忙 问题答案: 假设你使用,请使用关键字参数,并传递你要更新的模型。 因此,如果你具有和(后者必须扩展),那么你

  • 我有一个带有单元格编辑功能的数据表,我想通过应用一个不同样式的类来更新数据表以显示修改后的记录。 以下是我的问题: 如果在激发onCellEdit事件时未更新数据表,则记录已正确更新,但无法看到已修改行的applyed style类。 如果在onCellEdit事件激发时更新数据表,并使用return键更新值,则一切正常,并且可以看到修改行的应用样式类。 如果我在单元格编辑事件触发时更新数据表,并

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

  • 我有一个带有可删除行和列的dash DataTable对象。我想根据可见行更新图形。我不确定如何创建回调以及要传递哪些参数。在浏览器中删除行时,表对象中存储的数据实际上可能不会更改。

  • 是否可以从数据库中获取一个查询,该查询将从给定的变量(即将其发送到HTML,如下所示: 假设查询返回3个对象。这意味着该表将有3行数据,但所有的