Фильтр JSONField ничего не отображает
Я пытаюсь отфильтровать базу данных JSONField в соответствии с кодом страны объектов базы данных. У меня есть следующий JSON-словарь в моей базе данных JSON-полей:
Итак, когда я запускаю Database.objects.first().data, я получаю именно это, и все хорошо. У меня есть JSONField, определенный в models.py моего приложения Django:
from django.db import models
class Database(models.Model):
data = models.JSONField()
Однако, когда я запускаю Database.objects.filter(data__countryCode = "DE"), я получаю <QuerySet []>, и когда я также помещаю .data, он говорит, что объект 'QuerySet' не имеет данных модуля.
Как заставить фильтр работать для этой базы данных?
Я нашел SO Question с похожей проблемой, возможно, вы можете попробовать решение оттуда:
Database.objects.filter(data__0__countryCode = "DE")
В результате выполнения этого запроса вы вернете экземпляр объекта Database со всеми вставленными json. Чтобы сделать этот запрос, вы должны взять значение даты и искать как обычный dict
aux = {} # filtered values
for json_dict in Database.objects.first().data:
if json_dict.get('countryCode', '') == 'DE':
aux.update(json_dict)
Вы не сможете фильтровать значения поля из модели в запросе к базе данных