web-dev-qa-db-ja.com

Djangoのフィルターで最新のレコードを取得します

最新のDjangoモデルオブジェクトを取得しようとしていますが、成功しないようです。

どちらも機能していません。

obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
69
doniyor
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
82
catherine

Djangoのドキュメントを参照してください: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest

Latest()でフィールドを指定する必要があります。例えば。

obj= Model.objects.filter(testfield=12).latest('testfield')

または、モデルのメタがget_latest_byを指定している場合、earliest() or latest()field_name引数を省略できます。 Djangoは、デフォルトでget_latest_byで指定されたフィールドを使用します。

95
user3345047

latestは、実際には日付フィールドで動作するように設計されています(おそらく他の全順序型でも動作しますが、確かではありません)。そして、フィールド名を指定せずに使用できる唯一の方法は、 here のようにget_latest_byメタ属性を設定することです。

15
acjay

last()latest()

最後のUsign():

ModelName.objects.last()

latest()を使用:

ModelName.objects.latest('id')
8
Subin Shrestha

obj= Model.objects.filter(testfield=12).order_by('-id')[:1]は正しいソリューションです

5
Thomas John