当使用IF条件时,如何在django中的单个查询中进行DB更新



我有以下代码-

testcase = Table1.objects.filter(ID=id,serialno ='1234', condition='False').exists()
if not testcase:
c = Table1.objects.filter(ID=id,serialno ='1234').select_for_update().update(condition='True')

在这里,我查询同一个数据库两次。有没有什么方法可以在一个查询中实现过滤器的存在和更新?

筛选不发送查询。我同意上面的答案,但如果你想纠正你的代码,那么这将是正确的:

testcase = Table1.objects.filter(ID=id,serialno ='1234')
if not testcase.filter(condition='False'):
c = testcase.select_for_update().update(condition='True')

您只需在过滤器查询中使用update方法即可。

Table1.objects.filter(ID=id,serialno ='1234', condition='False').update(condition=True)

最新更新