Re: [Python] Help me with PG JSON e Django
2016-12-27 22:56 GMT+01:00 Alessandro Dentella: > Posso suggerirti di controllare: > > * cosa hai veramente nel db id | agency_code | search_offer | block_type | location | customer_price | agency_price | details | active | deleted | agency_id | rent_sale 1 | A0001 | 1 | Appartamento | Pescara | 10 | 8 | [{"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"}, {"details": {"mp": "M", "yn": "Y:"}, "attribute": "riscaldamento autonomo"}, {"details": {"mp": "P", "mq": ":", "yn": "Y", "qta": "1:"}, "attribute": "terrazzo"}] | t | f | 1 | 1 In pratica una lista di dizionari ma per sicurezza ho rpvato acnhe a salvare 12 | C0001 | 2 | appartamento | pescara | 10 | 8 | {"block_details": {"details": {"mp": "M", "mq": "80:", "qta": "2:"}, "attribute": "camera da letto"}} | t | t | 1 | 1 quindi con un dizionario di dizionari mi veine da pensare che la prova che devo fare a questo punto e' di provare la query postgres > * se da prompt di pg tutto funziona (a me la parte saliente del WHERE > è: > > WHERE "marketing_transmission"."substitution_data" @> > '{"display_name": "Salvatore Z..."}' > > Ricordo che all'inizio avevo problemi nell'inserimento e mi finivano > dentro nel valore del campo delle graffe controbarrate. Era un > problema di interfaccia (admin), non di ORM a memoria. Io ho fatto le prove con ./manage.py shell, adesso vedo di farmi stampare la query che genera Carlos -- EZLN ... Para Todos Todo ... Nada para nosotros ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Help me with PG JSON e Django
On Tue, Dec 27, 2016 at 11:03 PM, Andrea D'Amorewrote: > Non > Blocks.objects.filter(details__block_details__2__attribute='bagno') > ? > Anche, altro modo (senza usare __contains) -- | Raffaele Salmaso | https://salmaso.org | https://bitbucket.org/rsalmaso | https://github.com/rsalmaso ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Help me with PG JSON e Django
2016-12-27 22:59 GMT+01:00 Raffaele Salmaso: > Hai provato con il path completo? > Block.objects.filter(details__block_details__0__contains={'attribute': > 'bagno'}) > ? Non Blocks.objects.filter(details__block_details__2__attribute='bagno') ? -- Andrea ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Help me with PG JSON e Django
2016-12-27 22:03 GMT+01:00 Carlos Catucci: > Secondo il manuale di Django, versione 1.9, Provato anche con la 1.10? Versione di postgresql? Versione di python? Versione di psycopg2? 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=10.0,agency_price=8.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'}) > Hai provato con il path completo? Block.objects.filter(details__block_details__0__contains={'attribute': 'bagno'}) ? -- | Raffaele Salmaso | https://salmaso.org | https://bitbucket.org/rsalmaso | https://github.com/rsalmaso ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Help me with PG JSON e Django
On Tue, Dec 27, 2016 at 10:03:59PM +0100, Carlos Catucci wrote: > 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=10.0,agency_price=8.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 ( [] ) io confermo che questa sintassi per me funziona. Ho un caso analogo dove i dati sono: {"display_name": "Salvatore Z...", "activate_url": "https://trepalchi.it/accounts/.../;, "current_site": "trepalchi.it", "subject": "Salvatore Z... conferma la tua email per entrare nel portale Trepalchi.it", } In [1]: models.Transmission.objects.filter(substitution_data__contains={'display_name': 'Salvatore Z...'}) Out[1]: ]> Posso suggerirti di controllare: * cosa hai veramente nel db * se da prompt di pg tutto funziona (a me la parte saliente del WHERE è: WHERE "marketing_transmission"."substitution_data" @> '{"display_name": "Salvatore Z..."}' Ricordo che all'inizio avevo problemi nell'inserimento e mi finivano dentro nel valore del campo delle graffe controbarrate. Era un problema di interfaccia (admin), non di ORM a memoria. sandro *:-) -- Sandro Dentella *:-) http://trepalchi.itIl portale degli artisti ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python