Sto cercando di ottenere l'ultimo oggetto del modello Django ma non riesco a farlo.
Nessuno di questi funziona:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Sto cercando di ottenere l'ultimo oggetto del modello Django ma non riesco a farlo.
Nessuno di questi funziona:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Spero che sia d'aiuto.
Risposte:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Vedi i documenti di django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Devi specificare un campo in latest (). per esempio.
obj= Model.objects.filter(testfield=12).latest('testfield')
Oppure se il Meta del tuo modello specifica get_latest_by, puoi lasciare l' field_name
argomento a earliest() or latest()
. Django utilizzerà il campo specificato in get_latest_by
per impostazione predefinita.
latest
è davvero progettato per funzionare con i campi data (probabilmente funziona anche con altri tipi di ordine totale, ma non è sicuro). E l'unico modo per usarlo senza specificare il nome del campo è impostare il get_latest_by
meta attributo, come menzionato qui .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
è la soluzione giusta
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]