NESSUN ORDINE PREDEFINITO , un punto che non può essere sottolineato abbastanza perché tutti sbagliano.
Una tabella in un database non è una normale tabella html, è un insieme non ordinato di tuple. Spesso sorprende i programmatori abituati solo a MySQL perché in quel particolare database l'ordine delle righe è spesso prevedibile perché non sfrutta alcune tecniche di ottimizzazione avanzate. Ad esempio, non è possibile sapere quali righe verranno restituite o il loro ordine in nessuna delle seguenti query:
select * from table limit 10
select * from table limit 10 offset 10
select * from table order by x limit 10
Nell'ultima query, l'ordine è prevedibile solo se tutti i valori nella colonna x sono univoci. L'RDBMS è libero di restituire qualsiasi riga nell'ordine che preferisce, purché soddisfi le condizioni dell'istruzione select.
Sebbene tu possa aggiungere un ordinamento predefinito a livello di Django, il che fa sì che aggiunga una clausola order by a ogni query non ordinata:
class Table(models.Model):
...
class Meta:
ordering = ['name']
Tieni presente che potrebbe essere un freno alle prestazioni, se per qualche motivo non hai bisogno di righe ordinate.