Saya mencoba untuk mendapatkan objek model Django terbaru tetapi tampaknya tidak berhasil.
Tak satu pun dari ini berfungsi:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Saya mencoba untuk mendapatkan objek model Django terbaru tetapi tampaknya tidak berhasil.
Tak satu pun dari ini berfungsi:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Semoga membantu.
Jawaban:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Lihat dokumen dari django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Anda perlu menentukan bidang di latest (). misalnya.
obj= Model.objects.filter(testfield=12).latest('testfield')
Atau jika Meta model Anda menetapkan get_latest_by, Anda dapat meninggalkan field_name
argumen ke earliest() or latest()
. Django akan menggunakan bidang yang ditentukan get_latest_by
secara baku.
Usign terakhir ():
ModelName.objects.last()
menggunakan latest ():
ModelName.objects.latest('id')
latest
benar-benar dirancang untuk bekerja dengan bidang tanggal (mungkin juga berfungsi dengan jenis urutan total lainnya, tapi tidak yakin). Dan satu-satunya cara Anda dapat menggunakannya tanpa menentukan nama bidang adalah dengan menyetel get_latest_by
atribut meta, seperti yang disebutkan di sini .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
adalah solusi yang tepat
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]