Esiste una differenza tra filtro ed esclusione in django? Se hoFiltro Django vs escludi
self.get_query_set().filter(modelField=x)
e voglio aggiungere un altro criterio, c'è una differenza significativa tra seguire due righe di codice?
self.get_query_set().filter(user__isnull=False, modelField=x)
self.get_query_set().filter(modelField=x).exclude(user__isnull=True)
è considerato una pratica migliore o è la stessa in entrambe le funzioni e le prestazioni?
grazie. quindi è solo una questione di preferenze personali? Volevo solo assicurarmi che non avrei fatto qualcosa di inspiegabilmente stupido. – Enrico
@Enrico: Non proprio, dipende da cosa vuoi. Vedi la mia risposta. Le prestazioni non contano in questo caso, sono due metodi che servono a scopi diversi. Per la generazione SQL, la documentazione dice di '.exclude()': * Più parametri vengono uniti tramite AND nell'istruzione SQL sottostante, e l'intera cosa è racchiusa in un NOT(). * –
@Felix. Grazie. Credo che la mia domanda principale, che avrei potuto comunicare più chiaramente, riguardasse le prestazioni di entrambi in django e, in definitiva, in SQL. Dal tuo commento di follow-up, sembra che uno possa funzionare meglio dell'altro, ma principalmente basato sull'SQL risultante. Tuttavia, cambiando la seconda istruzione in '.exclude (user__isnull = True) .filter (modelField = x)' renderebbe quindi le due dichiarazioni più o meno uguali. – Enrico