Breve domanda
Qual è l'ordine predefinito di un elenco restituito da una chiamata di filtro Django quando è collegato a un database PostgreSQL?Qual è l'ordine predefinito di un elenco restituito da una chiamata di filtro Django?
Sfondo
Con la mia stessa ammissione, ho avuto fatto una scarsa assunzione al livello di applicazione in quanto l'ordine in cui viene restituita una lista sarà costante, cioè senza l'utilizzo di 'order_by'. L'elenco degli elementi che stavo interrogando non è in ordine alfabetico o altro deliberato dell'ordine. Si è pensato di rimanere nello stesso ordine con cui sono stati aggiunti al database.
Questa ipotesi è valida per centinaia di query, ma un errore è stato segnalato dalla mia domanda quando l'ordine è cambiato inconsapevolmente. Per quanto ne so, nessuno di questi documenti è stato toccato durante questo periodo poiché sono l'unica persona che gestisce il DB. Per aggiungere confusione, quando si eseguiva l'app Django su Mac OS X, funzionava ancora come previsto, ma su Win XP, ha cambiato l'ordine. (Si noti che le centinaia di query menzionate erano su Win XP).
Qualsiasi intuizione sarebbe utile in quanto non sono riuscito a trovare nulla nella documentazione di Django o PostgreSQL che spiegasse le differenze nei sistemi operativi.
Esempio di chiamata
required_tests = Card_Test.objects.using(get_database()).filter(name__icontains=key)
EDIT
Dopo aver parlato con oggi qualche mio collega, mi era venuto con la stessa risposta Björn Lindqvist.
Guardando indietro, ho sicuramente capito perché questo è fatto male così spesso. Uno dei vantaggi dell'uso di un ORM Django, di sqlalchemy o di qualsiasi altra cosa è che è possibile scrivere comandi senza dover conoscere o comprendere (in dettaglio) il database a cui è connesso. Devo ammettere che sono stato uno di questi utenti. Tuttavia sul lato opposto di questo è che senza conoscere il database in dettaglio errori di debug come questo sono abbastanza fastidiosi e potenzialmente catastrofici.
Nizza consegna ferma :) – kronosapiens