最新のDjangoモデルオブジェクトを取得しようとしていますが、成功しないようです。
どちらも機能していません。
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
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
で指定されたフィールドを使用します。
latest
は、実際には日付フィールドで動作するように設計されています(おそらく他の全順序型でも動作しますが、確かではありません)。そして、フィールド名を指定せずに使用できる唯一の方法は、 here のようにget_latest_by
メタ属性を設定することです。
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
は正しいソリューションです