gpt4 book ai didi

python - 使用 F 对象切换查询集中的 boolean 字段

转载 作者:行者123 更新时间:2023-11-28 17:52:51 26 4
gpt4 key购买 nike

我已经尝试了这些查询并得到了这些结果:

queryset.update(done=not F('boolean'))
{'time': '0.001', 'sql': u'UPDATE "todo_item" SET "done" = True'}

queryset.update(done=(F('boolean')==False))
{'time': '0.001', 'sql': u'UPDATE "todo_item" SET "done" = False'}

我想要的是这样的:

queryset.update(done=F('done'))       
{'time': '0.002', 'sql': u'UPDATE "todo_item" SET "done" = "todo_item"."done"'}

但是用

SET "done" = !"todo_item"."done"

切换 boolean 值

最佳答案

我正在开发 django-orm 扩展,并且已经部分实现了您问题的解决方案。

>>> from django_orm.expressions import F
>>> from niwi.models import TestModel
>>> TestModel.objects.update(done=~F('done'))

# SQL:
UPDATE "niwi_testmodel" SET "done" = NOT "niwi_testmodel"."done"; args=()

https://github.com/niwibe/django-orm

是部分解决方案,不是很干净。到目前为止仅适用于 postgresql。稍后我会看看如何改进它。

更新:现已改进并适用于 postgresql、mysql 和 sqlite。

关于python - 使用 F 对象切换查询集中的 boolean 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6643314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com