У меня есть модель, которая содержит jsonbfield, и мне нужно запросить значения словаря. В запросе мне нужно убедиться, что все значения словаря равны None
или что все поле имеет значение None.
Моя модель выглядит так:
MyModel(models.Model):
date_created=DatetimeField()
json_dict = JSONField(default=dict, null=True)
По сути, я хочу получить что-то вроде:
MyModel.objects.filter(Q(json_dict={}) |Q(json_dict=None) | Q(all(v=None for v in json_dict.values())))
Наиболее важной частью является
Q(all(v=None for v in json_dict.values()))
Но я не могу сделать это в запросе. Мне было интересно, есть ли способ проверить это, сохранив результаты в наборе запросов, вместо того, чтобы оценивать их в виде списка и проверять там.
ОГРАНИЧЕНИЕ:
- Я не знаю ключей словаря, так как они будут разными для каждого объекта в MyModel.
- Я должен иметь возможность использовать функцию
bulk_create
, поэтому перезапись сохранить не вариант