スキップしてメイン コンテンツに移動

インターン(その2)

豊橋技術科学大学の近藤です。

前回に引き続き、AdminSiteのオーバーライドに関して
まとめてみます。

基本的にはModelAdminのオーバーライドと同様に、

if perms.get('change', False):
  try:
    model_dict['admin_url'] = reverse('autoview:%s_%s_changelist' % info, current_app=self.name)
  except NoReverseMatch:
    pass

このようにページ名を変更していけばOKでした。
(前回は付け忘れていましたが、autoviewという名前空間をつけました)

オーバーライドし、ページ名を変更する関数は、
  • __init__
  • register
  • index
  • app_index
さらに、全ユーザに権限を与えるため、has_permissionの
オーバーライドを行います。

これによりadminサイトと同様に、 urls.pyのurlpatternsに

url(r'^autoview/', include(autoview.urls)),

を追加し、

使用したいモデルをadmin.site.registerのように、

autoview.register(Hoge)

とすれば、使用できました。

もちろんAdminのようにリストに表示したいものを
list_displayに登録することで変えることも可能です。


ただ、このままではAdminサイトの更新履歴と同じデータベースを
利用しているので、その点を修正する方法について
次回の記事にまとめようと思います。




コメント

このブログの人気の投稿

INTEROP Tokyo2015

6月11日(木)Interop Tokyoへ行ってきました。 私の目当ては、CITRIX社 ブース会場で行われた クラウド・エバンジェリストの北瀬公彦さんと常田秀明さんの講演です CITRIX社のロードバランサーであるネットスケーラーの活用事例を IBM社のクラウドサービスSoftLayerを例に説明されていました。 CITRIX社は、IBM社のグローバル提携企業だから、 CITRIX社のロードバランサーであるネットスケーラーと SoftLayer は、セットで説明されていました。 SoftLayer は、データセンターをプライベートにつなぐネットワークだっていう話でしたので、 IBM社のSoftLayer の物理サーバーを使えば、 データセンターをクラウド化ができる。 (オンプレミスの環境をそのまあ維持してデータセンターへ移行できる) 従来のオンプレミスユーザー最適だってことでした。 そのため、仮想化とか、クラウドがどうかとか説明必要ないということになり、 企業の情報システム担当者は、安心して使えるし、経営者にも説明しやすいと思いました。 自前で仮想化システム研究できる余裕はなく、 PaaSは不安という感じがあれば、 SoftLayerのIaaSサービスって、選択しやすいし、わかりやすい。 最適なクラウド基盤を選択できるっていいなと思いました。

はじめまして!

はじめまして! 株式会社MNUで新しくブログを始めます。 主に、プログラムに関する技術的なことを中心に社員が持ち回りで書いていきます。 皆様のお役に立てれば幸いです。 どうぞ、これからよろしくお願いします。 ここから下はコードを表示するサンプルです。 int x = foo(); /* This is a comment This is not code Continuation of comment */ int y = bar(); // This is line 4. foo(); bar(); baz(); boo(); far(); faz(); sh for target do WORKDIR=$(mktemp -d "$EXTRACTHOMEDIR"/XXXXXX) case "$target" in *.[Tt][Gg][Zz]|*.[Tt][Aa][Rr].[Gg][Zz]|*.[Tt][Aa][Rr].[Zz]) tar vzxf "$target" -C "$WORKDIR" move_to_currentpath "$WORKDIR" "$target" ;; *.[Tt][Bb][Zz]|*.[Tt][Aa][Rr].[Bb][Zz]2) tar vjxf "$target" -C "$WORKDIR" move_to_currentpath "$WORKDIR" "$target" ;; *.[Gg][Zz]) gzip -d "$target" move_to_currentpath "$WORKDIR" "$target" ;; *.[Zz][Ii][Pp]|*.[JjWw][Aa][Rr]) check_required_pro...