私はジャンゴでモデルを構築し、私は、以下の情報を追加します。基準に基づくDjango-orderモデルレコード?
def __unicode__(self):
return self.some_field
class Meta:
ordering = ['some_field_to_order_by']
それはif/else
シナリオの並べ替えに基づいてordering
を設定することは可能ですか?
例えば、私は議論のために、これらのフィールドを持っている、customer
モデルがあります:残し、
first_name
last_name
company_name
is_company (boolean)
customer
が会社である場合は、私が唯一company_name
フィールドに情報を追加してis_company=True
を設定します他の2つの空白。 customer
が人物の場合は、とlast_name
フィールドに情報を追加し、company_name
は空白にし、is_company=False
のままにします。
私はis_company
がTrue
ある場合is_company
フィールドがFalse
とcompany_name
ある場合last_name
することにより、これらのレコードをソートします。
これは可能ですか?例えば
EDIT(リクエストあたり、ソートの)私のアプリのために
は、このcustomer
の表は、セキュリティシステムの所有者に関する情報を保持しています。時には、セキュリティシステムが居住環境に設置されることもあります。この場合、システムの所有者は人なので、customer
レコードにfirst_name
とlast_name
と入力します。システムが商業的な環境に設置されている場合がありますので、所有者は会社です。このためには、company_name
フィールドだけを入力し、他のフィールドは空白のままにします。
新しいセキュリティシステムのインストールの見積もりを提供する際に、新しい顧客または既存の顧客(既存の顧客であるが新しい場所)に見積もりを提供することができます。既存の顧客の場合、既存のすべての顧客(customer
テーブルのすべてのレコード)をリストするドロップダウンボックスがあります。
これは、すべてのレコードを適切に注文するための場所です。今のように、私は何百もの記録が混乱して、既存の所有者を見つけるのが残酷になってしまいます。
これは私が達成しようとしていることに役立ちます。
もちろん。クエリーセットに明示的なorder_by呼び出しを追加します。metaクラスでこれを設定すると、それを行う方法が見つかったとしても、メタは企業と人の両方を含むコレクションであるテーブル全体の並べ替えを定義するため、意味がありません。 – akonsu
@akonsu - 私は事実上常に人や会社だけでなく、すべての企業とすべての人物をまとめて表示します。だからこそ私は注文書を 'queryset'で定義することなく注文する方法を見つけ出す必要があります。 – Garfonzo
企業と人の両方を含むクエリーセットをどのように注文したいのかを明確にしてください。 – akonsu