我是Django的新手,并试图用它来创造一些东西。我坚持让它来更新我想要的行。我不想添加一行。我相信为了做到这一点,我必须通过某种循环单独设置值。那是对的吗?我如何创建一个循环,以便它可以在不知道列名称的情况下分配值?
if request.POST:
form = GeneralConfigurationUpdateForm(instance=instance, request.POST)
if form.is_valid():
instance = form.save(commit=False)
#
# HERE I NEED TO SET ALL THE VALUES for the row in GeneralConfiguration models
#
messages.add_message(request, messages.SUCCESS, "You update was successfull")
return HttpResponseRedirect('generalconfig/update/')
答案 0 :(得分:0)
要更新某些内容,以下是一般流程:
尝试从主键中获取对象,主键通常作为名为pk
的参数从URL传入。
如果此pk
无效,请显示错误页面。
使用此pk
获取对象,然后使用它作为实例初始化ModelForm
。
使用请求中的数据验证此表单。
如果此表单有效,请执行form.save(),这将更新记录。
将用户重定向到感谢页面(以防止重新加载页面并进行多次更新)。
以下是一些实现上述内容的代码:
def update_something(request, pk=None):
something = get_object_or_404(SomethingClass, pk=pk)
form = SomethingForm(request.POST or None,
request.FILES or None, instance=something)
if form.is_valid():
form.save() # This does the magic of updating the record with
# the data from the form
return redirect('/thanks')
else:
return render(request, 'update_form.html', {'form': form})