2016-09-22 20 views

答えて

1

警告!私の答えに記載されているdjangoのAPIのいくつかの部分は内部的なものとみなされ、将来のdjangoのリリースでは通知なしに変更される可能性があります。

あなたの心に留意して、実際には自分のフィルタを作成するのはかなり簡単です。あなたがする必要がある:

  1. サブクラスSimpleListFilterとその内部にいくつかのメソッドを作成します(あなたのフィルタを用いてテンプレートをレンダリングするために)あなたのデフォルトの範囲の値と選択された範囲の値を生成します
  2. 提出パラメータを取るセットクエリセット方法あなたのフィルタおよびフィルタリストのクエリセット
  3. によって(admin/filter.htmlに基づいて)あなたのフィルタ
  4. でテンプレートを作成し、あなたのフィルターテンプレートを指し、あなたのSimpleListFilterサブクラスでtemplateプロパティを設定します。

Djangoはテンプレート3パラメータに渡します:

  • title - (あなたのクラスにtitleプロパティから取得)あなたのフィルタタイトル
  • choices - あなたのクラスのchoices方法によって生成されたdictsのリスト(デフォルトではlookupsメソッドから返されたタプルのリストを変更します)
  • spec - あなたのクラスインスタンス。

この時点から、テンプレートのspecを使用して、クラスの任意の属性またはメソッドにアクセスできるため、任意のフィルタの作成が可能である必要があります。