Django:使用条件更新

2024-09-19 20:51:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过Django中的窗体更新对象,但在视图中执行form.save()之前,我想对数据执行一些条件。你知道吗

例如:

ire = get_object_or_404(Ire, id_IRE=pk)
if request.method == 'POST':
    form = IreForm(request.POST or None, instance=ire)
    if form.is_valid():
        if ire.get_att1()==form.cleaned_data.get('att1') and ire.get_att2()==form.cleaned_data.get('att2'):
           form.save(update_fields=['type']) #just update the field type
        else:
           form.save() #create a new object

在我看来,当我这样做的时候,第一个条件是有效的,但是当我改变形式中的att1或att2时,它不会做任何改变。你知道吗

请帮助我如何在保存前做条件!!!你知道吗


Tags: orformdatagetifobjectrequestsave
1条回答
网友
1楼 · 发布于 2024-09-19 20:51:43

谢谢,我找到了一个解决方案,它存储了在执行更新操作之前要更新的对象的值:

ire = get_object_or_404(Ire, id_IRE=pk)
**ire_att1=ire.get_att1()**
**ire_att2=ire.get_att2()**
**ire_type=ire.get_type()**

if request.method == 'POST':
  form = IreForm(request.POST or None, instance=ire)
  if form.is_valid():
    if **ire_att1**==form.cleaned_data.get('att1') and **ire_att2**==form.cleaned_data.get('att2'):
          Ire.objects.filter(id_IRE=pk).update(type=form.cleaned_data.get('type'))
    else:
          form.save()

这就是我解决问题的方法,因为我发现在调用表单模型之后,对象的值与我在调用之前输入的值同时改变表单保存你知道吗

相关问题 更多 >