我是Django的新手,我正在开发一个用于计划的CRUD应用程序。“添加”和“删除”操作运行良好。对于更新操作,一旦用户确认,我想将此计划的状态更改为“已删除”,并在数据库中为修改后的计划添加一个新行。
以下是到目前为止我创建一个新计划的方法,该计划运行良好:
def init(request):
if request.method == 'POST':
form = InitiativeForm(request.POST)
if form.is_valid() :
try :
form.save()
return redirect('/show')
except :
pass
else:
form = InitiativeForm()
return render(request, 'index.html', {'form': form})
以下是我删除方案的方法。我不想删除方案,只想将状态切换为“已删除”。这也很有效:
def destroy(request, id):
initiative = Initiative.objects.get(id=id)
initiative.status_init = Status.objects.get(status = 'DELETED')
initiative.save(force_update=True)
return redirect('/show')
但是对于更新操作,我想保留以前的记录并将状态切换为“已删除”(就像我删除一个方案一样),我想将新记录保存为新行(就像我创建一个新方案一样)。下面是我的当前代码:
def update(request, id):
initiative = Initiative.objects.get(id=id)
form = InitiativeForm(instance = initiative)
if form.is_valid():
initiative.status_init = Status.objects.get(status = 'DELETED')
initiative.save(force_update = True)
form.save()
return redirect('/show')
return render(request, 'index.html', {'form': form})
但它只是添加一个新的行与修改的倡议。它不切换当前记录的状态为'删除'。任何想法为什么?感谢您的帮助,真的很感激。
2条答案
按热度按时间pexxcrt21#
我不是100%确定,但是
form
和initiative
可能指向同一个东西。您可以尝试这样的操作(未测试),将状态更新为DELETED,并创建一个新记录。这可能不会按预期工作,但它可能会使您走上正确的方向。
jqjz2hbq2#
根据AMG的输入,我尝试了以下代码,但它仍然添加了新的计划,但没有将初始计划的状态切换为“已删除”