Фильтр 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)

Вы не сможете фильтровать значения поля из модели в запросе к базе данных

Вернуться на верх