On 2014-09-23 16:29, Marco De Paoli wrote:
Pippo.objects.exclude(Q(alias__isnull=True) | Q(alias__exact=''))
devo ammettere che a volte anche a me risulterebbe più immediato
scrivere:
SELECT * FROM app_pippo WHERE alias IS NOT NULL AND alias != ''
(per non parlare dei casi di join!)
Esatto: appena la query diventa un po' meno sui binari l'autore
dell'orm comincia a tirarti dietro tutte le feature del mondo per far
vedere che puoi usare il suo programma in tutti i casi possibili, ma poi
se devi a imparare quelle e a combinarle tra loro, non e' meglio
direttamente scrivere l'SQL? Da questo punto di vista trovo comodissimo
Manager.raw:
Pippo.object.raw("""
select p.* from pippo
JOIN WHERE FILTER SET-RETURNING-FUNCTIONS
RECURSIVE-COMMON-TABLE-EXPRESSION
limit 42""")
che ti tira fuori i model a partire da qualunque cosa sei capace di
tirare al database, in caso la tua query produca oggetti. Che resta un
sottoinsieme limitato delle query possibili ("select nome, count(*) from
pippo group by 1" non produce pippi).
-- Daniele
P.S. SELECT * FROM app_pippo WHERE coalesce(alias, '') != '' - altra
cosa che vagliela a spiegare, a django...
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python