Django-って最後のオブジェクトを作成し、同時にフィル
-
12-09-2019 - |
質問
謝罪、まったく新しいベスタッフによるイタリア製です。
私は2です。最初に、あなたは何点ぐらいになると思うぐらいの最後のオブジェクトを作成(又は高pk)リストのオブジェ?例えば、私が以下の最初のオブジェクト:
list = List.objects.all()[0]
がわかりやすく伝えるためのリストの長さ.オブジェ?私た。オブジェクト。長さが無い.
第二にすることはできるかを同時ィルタを組み合わせたリストがありますか?以下に例を示します。
def findNumber(request, number)
phone_list = Numbers.objects.filter(cell=number)
たいようなものがより:
def findNumber(request, number)
phone_list = Numbers.objects.filter(cell=number or home_phone=number)
何が正しい構文の場合?
解決
私はまだこれを試していないが、私は<のhref =「https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest」のrel = "noreferrerで見てね「>)(最新ののオペレータクエリセットのます:
最新の(FIELD_NAME =なし)
で最新のオブジェクトを返します。 テーブル、日付によって、FIELD_NAMEを使用して 日付フィールドとして提供ます。
この例では、最新のエントリを返します。 表中、に従って PUB_DATEフィールドます:
Entry.objects.latest( 'PUB_DATE')
お使いのモデルのメタ指定している場合 get_latest_by、あなたはオフのままにすることができます 最新のFIELD_NAME引数()。 Djangoはで指定されたフィールドを使用します デフォルトでget_latest_byます。
のように取得する()、最新の()昇給 オブジェクトがない場合のDoesNotExist 指定されたパラメータが存在する。
(最新の注意)のために純粋に存在します 利便性と可読性ます。
そして上のモデルのドキュメントget_latest_byするます:
get_latest_by
Options.get_latest_by
モデルのDateFieldまたはDateTimeField型のフィールド名。これは、モデル・マネージャーの最新の方法で使用するデフォルトのフィールドを指定します。
例:
get_latest_by = "ORDER_DATE"
最新のための()以上のためのドキュメントを参照してください。
編集:ウェイドはQ()演算子の良い答えを持っている。
他のヒント
この作品!
Model.objects.latest('field')
- フィールドはIDを指定することもできます。それは、最新のIDになります。
最大の主キーの場合、これを試してみます:
List.objects.order_by('-pk')[0]
pk
を使用すると、あなたの主キーとして定義されたフィールドの実際の名前に関係なく動作することに注意してください。
以来、Django1.6-最終
last()
作品のように first()
, ものを返します最後のオブジェクトのqueryset.
を返します最後のオブジェクトはqueryset、 None
がない場合、マッチングオブジェクトです。場合にはQuerySetはご注文確定後のquerysetは自動的にその有効なタイプを利用します。
list = List.objects.last()
また、最後のオブジェクトの作成
あなたはアイテムの数を取得し、クエリでのカウント()メソッドを使用することができます。
list = List.objects.all()
list.count()
フィルタへの引数は、「AND」一緒にエド。あなたは何をする必要があるORフィルターはQオブジェクトを見れば。 のhttp://docs.djangoproject .COM / ENは/ dev /トピック/ DB /クエリ/#錯体検索-と-Q-オブジェクトの
作成した最新のオブジェクトの代替ます:
List.objects.all()[List.objects.count()-1]
リスト内のアイテムがないときケースのためにAssertionErrorがを追加する必要があります。
except AssertionError:
...
私は、Djangoのバージョンに取り組んでいますlast
もlastet
どちらが働いている、1.4.22です。
latest = lambda model_objects, field : model_objects.values_list( field, flat = True ).order_by( "-" + field )[ 0 ]
latest_pk = latest( List.objects, "pk" )
この関数は、入力としてquery_set受け付ける。
あなたが行うことで、この機能を動的に結合することができるます:
import types
List.objects.latest = types.MethodType( latest, List.objects )
そして、あなたは簡単に、この最新のPKで最後のオブジェクトを取得することができる必要があります。