[Python] Help me with PG JSON e Django
Carlos Catucci
carlos.catucci a gmail.com
Mar 27 Dic 2016 22:03:59 CET
Secondo il manuale di Django, versione 1.9, si possono definire,
previa importazione dellì'apposito contrib (from
django.contrib.postgres.fields import JSONField) dei campi json in una
tabella.
Ed in effetti la creazione (Blocks.objects.create(....)) funziona benissimo.
I dolori vengono al momento di recuperare di dati immagazzinati in
questa struttura JSON.
A sentire il manuale sarebeb tutto semplice e pulito
Dog.objects.filter(data__breed='collie')
oppure per casi complessi
Dog.objects.filter(data__contains={'owner': 'Bob'})
Peccato che pur provando e riprovando i dati non vengno recuperati mai.
La struttura del model e' la seguente:
class Blocks(models.Model):
agency = models.ForeignKey("users.Agencies")
agency_code = models.CharField(max_length=30)
rent_sale = models.CharField(max_length=1,choices=RENT_SALE)
search_offer = models.CharField(max_length=1,choices=SEARCH_OFFER)
block_type = models.CharField(max_length=100)
location = models.CharField(max_length=200)
customer_price = models.FloatField(default=0.0)
agency_price = models.FloatField(default=0.0)
details = JSONField()
active = models.BooleanField(default=True)
deleted = models.BooleanField(default=False)
Questo un esempio di inserimento
Blocks.objects.create(agency_id=1,agency_code='C0001',rent_sale='1',search_offer='2',block_type='appartamento',location='pescara',customer_price=100000.0,agency_price=80000.0,
active='t',deleted='f',details= {'block_details': [{"details": {"mp":
"M", "mq": "80:", "qta": "2:"}, "attribute": "camera da letto"},
{"details": {"mp": "M", "mq": "80:", "qta": "2:"}, "attribute":
"camera da letto"}, {"details": {"mp": "M", "qta": "1:"}, "attribute":
"bagno"}, {"details": {"mp": "P", "yn": "Y:"}, "attribute": "posto
auto"}, {"details": {"mp": "M", "yn": "Y:"}, "attribute":
"ascensore"}]})
Ma se eseguo una query tipo
Blocks.objects.filter(details__contains={'attribute': 'bagno'})
ottengo indietro una lista vuota ( [] )
Qualche hint su dove cercare? In rete trovo sempre e solo esempi
identici a quello del manuale.
Carlos
--
EZLN ... Para Todos Todo ... Nada para nosotros
Maggiori informazioni sulla lista
Python