Django update_or_create по умолчанию с помощью объекта запроса
Я использую Django 3.2 и пытаюсь вызвать update_or_create
как в приведенном ниже фрагменте:
from django.db import models
result = model.objects.update_or_create(
field1="value1",
field2="value2",
defaults={
"field3": "value3",
"field4": ~models.Q(field3="value3"),
},
)
field4
- это булево значение. Проблема в том, что возвращаемое значение в field4
после вызова метода - не булево, а объект запроса:
result[0].field4
<Q: (NOT (AND: ('field3', 'value3')))>
Однако если я обновлю объект, содержимое будет правильным:
result[0].refresh_from_db()
result[0].field4
False
Я уверен, что поле было обновлено, потому что до того, как я запустил сниппет, существовал экземпляр с теми же значениями для field1
и field2
, но с противоположным значением в field4
(True
). Мой вопрос: есть ли способ для update_or_create
вернуть булево значение для field4
без повторного запроса экземпляра из БД?
Я уже проверял StackOverflow на наличие подобных вопросов, этот был самым близким, который я нашел но он все еще не отвечает на мой вопрос.