Ich habe eine queryset von Products
mit JSONField
attributes
enthält dict
Filter Django queryset für einen dict Wert
class Product(models.Model):
attributes = JSONField(
pgettext_lazy('Product field', 'attributes'),
encoder=DjangoJSONEncoder, default={})
I Products
wo attributes['12'] == '31'
Nach einem Werk filtern möchten:
qs.filter(attributes__contains={'12': '31'})
Nach o ne nicht:
qs.filter(attributes__12='31')
Ist das etwas, was ich mit PostgreSQL
erreichen kann oder sollte ich es nach ES verschieben?
EDIT: Leider kann ich nicht die erste Lösung verwenden, da diese dict
mehr Schlüssel enthalten kann.
Erste Lösung funktioniert gut. Gegeben haben wir:
product.attributes = {'333': ['6', '1']}
Wir können es herausfiltern von:
Product.objects.filter(attributes__contains={'333': ['6']}
usw. Völlig übersehen sie.
Nach [diese Frage] (https://stackoverflow.com/questions/23697540/query-a-json-key-in-postgres-json-field), Postgres unterstützt es, aber ich bin mir nicht sicher, ob/wie Django das erreicht. – Randyr