我有一个模型实例,上面有一个布尔字段。我想要实现的是将值从True切换为False,反之亦然。
当然,我可以写:
inst = Model.objects.get(id=1)
inst.boolean_field = not inst.boolean_field
inst.save()
但是有2个查询:一个用于提取,另一个用于更新。
我只想切换值,但以下似乎不起作用:
Model.objects.filter(id=1).update(boolean_field=not F("boolean_field"))
我很确定我做错了什么,或者说这是不可能的。
答案 0 :(得分:5)
不幸的是,django尚不支持F() object
的否定。
当您执行not F('boolean_field')
时,它会被评估为True
,因此更新操作始终会保存True
。 e.g。
>>> F('boolean_field')
<django.db.models.expressions.F object at 0x36b7d50>
>>> not F('boolean_field')
True
请参阅django 17186 - Inverted F expression (negation)
上的此错误答案 1 :(得分:1)
您可以改为使用it('my test', async function(){
const result = await resolvingPromise;
expect(result).to.equal('ok');
})
it('next test', async function(){
let data = await db.getData(1);
expect(data.field).to.equal(null);
})
:
Case