Django ORM запрашивает данные в JSONField

class GiftItem(models.Model):
    myjsonfield = models.JSONField(null=True)

Данные в myjsonfield представлены в этих форматах

Запись 1:

{
    "name": "Birthday Present Box",
    "category": "Gifts",
    "choices": [
        {
            "name": "Watch", "points": 31.89
        }, {
            "name": "Perfume", "points": 19.07
        }, {
            "name": "Bracelet", "style": "Gold 9k", "points": 43.5
        }
    ]
}

Запись 2:

{
    "name": "Wedding Present Box",
    "category": "Anniversary",
    "choices": [
        {
            "name": "Diamond Ringh", "points": 31.89
        },{
            "name": "Gold Chain", "points": 29.97
            "reviews": [{"User": "John", "rating": 5}, {"User": "Joe", "rating": 8}]
        },{
            "name": "Bracelet", "style": "Gold 18k", "points": 73.2
        }
    ]
}

Я могу перечислить все записи, где первый элемент watch:

GiftItem.objects.filter(myjsonfield__choices__0__name="Watch")

ИЛИ показать все записи, у которых есть watch

GiftItem.objects.filter(myjsonfield__choices__contains=[{'name': 'Watch'}])

** Вопрос 1: ** Я хочу перечислить все записи, которые имеют любой из вариантов выбора.points > 50 or < or = to some int.

Вопрос 2: У меня есть еще несколько непоследовательно вложенных данных, например, выше запись 2 имеет ключ reviews. Есть ли способ перечислить все записи без необходимости указывать полный путь? myjsonfield__has_key="reviews" не работает, пока я не укажу полный путь myjsonfield__choices__has_keys="reviews"

Пожалуйста, посоветуйте.

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