Как мы можем запросить вложенный словарь в django-hstore?

Я храню это в своем serializedDictionaryField:

data = {
    'k1': 'v1',
    'k2': 'v2',
    'k3': {'nested_k': 'nested_v'}
}

Можно ли фильтровать по значениям вложенного словаря? что-то вроде

Model.objects.filter(data__contains={'nested_k': 'nested_v'})

1 ответ

Решение

HStoreField просто отображает строку в строку и не поддерживает вложенную структуру, вы можете использовать скорее JSONField которые представляют собой встроенное поле Posgres в Django 1.9+ и posgres 9.4+.

models.py:

from django.db import models
from django.contrib.postgres.fields.jsonb import JSONField
class MyModel(models.Model):
    ...
    data = JSONField(blank=True, null=True, default=dict)

views.py:

MyModel.objects.filter(data__k3__contains={'nested_k': 'nested_v'})
Другие вопросы по тегам