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

インターン(その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サイトの更新履歴と同じデータベースを
利用しているので、その点を修正する方法について
次回の記事にまとめようと思います。




コメント

このブログの人気の投稿

はじめまして!

はじめまして!
株式会社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(); shfor 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_program unzip /usr/p…