例如:
test_table
Field, Type, Null, Key, Default, Extra
'username', 'varchar(64)', 'NO', 'PRI', NULL, ''
'status', 'tinyint(1)', 'NO', '', NULL, ''
我想按用户名=“ john”进行搜索,如果存在,则将状态更新为1;
Django具有update_or_create函数,但在用户名和状态均存在的情况下有效;
例如
表中已有数据:
username:john
status:0
我想将状态更改为1
如果我使用update_or_create(),由于没有像“用户名:john,状态:1”这样的行,因此它将“创建”而不是“更新”状态为1:
TestTable.objects.update_or_create(username="John",status=1)
当然,您总是可以:首先搜索,然后搜索“如果...创建;否则...更新”。但是我不知道在使用update_or_create()时是否可以使用某些Django函数或没有注意到的东西。
谢谢!
答案 0 :(得分:0)
尝试一下:
try:
o = TestTable.objects.get(username='John')
o.status = 1
o.save(update_fields=["status"])
except TestTable.DoesNotExist:
o = TestTable(username='John', status=1)