我有以下代码-
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)