2012-04-20 13 views
2

私はdjango noobです。管理モジュールに単一のモデルで通常の操作とは少し異なる処理をさせる方法を理解しようとしています。私が必要とするのは、クエリを実行してクエリの結果をビューページとして表示し、次に編集ページへのリンクを許可して、既存のモデルの編集ビューにユーザーを移動させることです。私のクエリ内の3つのテーブルの2が関連している、すべてではない3.非関連モデルによるDjango管理者のカスタマイズ

例:

select a.foo, a.second_field, b.bar, c.unrelated_field 
from a, b, c 
where a.primary_key = b.foreign_key 
and a.some_value = c.some_value 

注およびcは、関連テーブルとして定義されていないこと。

私は、このクエリ出力のビューを持っていて、選択されたときに全体としてbモデルの編集ビューへのリンクを持っています。

私はこのクエリのためにDBにビューを作成し、単にビューを取得するための新しいモデルを作成しましたが、これは最初から正しいアプローチであるとは確信していませんが、そこに私はどのようにBテーブルの編集ページへのリンクを作るのか分からないようです。

どのように最高のdjangoの管理者とこのような何かを達成するためにどのような指針やアドバイスをいただければ幸いです!

途中でDjango 1.3.1を使用します。

乾杯!

答えて

0

ModelAdminchange_viewを無効にすることができます。これにより、必要なすべてのデータを含む辞書のリストが作成されます。次に、change_list.htmlテンプレートをオーバーライドしてこのデータを正しく表示し、正しいモデルが表示されるようにchange_formビューにリンクします。だからDjangoの管理サイトに完璧に統合されます。

そして、私はそれがなくても問題を解決することができる限り、DBビューは好きではありません。データが大量のパフォーマンスギャップやたくさんのマジックコードなしでPythonで構築できる場合は、Pythonで処理する必要があります。

+0

お返事ありがとうございます。私は今これを試しています。 2つのこと... 1)あなたがdictsのリストを作成すると言うとき、それをextra_contextに追加することを意味しますか?私はこれらがどこに行くかについて100%明確ではありません。また、私はこれを、特定のモデルの標準モデルビューとは別にしたいので、まだビューが必要な場合があると思います。私はカスタムビューを起動するためにボタンや何かを追加することを実験していますが(可能であればビューを避けることについてあなたのところに) – MiKey

+0

私は間違っていました。メソッドは 'changelist_view'です。通常は、[ChangeList](https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py#L1124)を使用して項目を表示しますが、他の変数をテンプレートに送信したり、あなたのテンプレートが何をするべきかを知っている限り。 – ilvar

関連する問題