我需要通过
update
操作,恢复 boolean
值。
我尝试过:
Item.objects.filter(serial__in=license_ids).update(renewable=not F('renewable'))
但这不起作用。我确保这些字段未设置为
null
。
你还可以这样做:
Item.objects.filter(serial__in=license_ids).update(renewable=Q(renewable=False))
当可再生为
True
=> Q 对象条件时将给出 False
当可再生为
False
=> Q 对象条件时将给出 True
Q()
对象的 Django 文档。
此处不支持Not。您必须使用Case When
from django.db.models import Case, Value, When
Item.objects.filter(serial__in=license_ids
).update(renewable=Case(
When(renewable=True, then=Value(False)),
default=Value(True))
)
)
可以使用 ~(NOT)运算符来否定这些:
Item.objects.filter(serial__in=license_ids).update(renewable=~F('renewable'))