Admin siteのChange listで自分が入力したデータだけを表示する - 発展編

前回では、Change listにユーザごとにデータを表示できるようにしましたが、
場合によっては不都合な時があります。
社内システムなどでAdmin siteを利用するときです。
全てのデータを閲覧できる人と入力したデータを閲覧できる人

仕様

  1. ユーザのis_superuserを利用し、チェックの入っているユーザは全てのデータを閲覧することが可能とします。
  2. test2ユーザにスーパユーザ権限を付与します。

Adminの修正

admon.py

from django.contrib import admin
from appname.models import Post

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'pub_date', 'author', )

    def queryset(self, request):
        if request.user.is_superuser:       #追加
            return Post.objects.all()       #追加
        return Post.objects.filter(author = request.user)

admin.site.register(Post, PostAdmin)

test1ユーザでアクセス

admin01

test2ユーザでアクセス

admin02

簡単な社内システム作成ならこれで十分ではないでしょうか。
複雑なアクセス権限を設定したい場合は、パーミッションをカスタマイズします。

twitter 2009-04-25 10:45:46.399795

関連ページ

参照サイト

Recent Updates

URLConf Tip 01 - キャプチャの有無にかかわらず同一のviewで処理する
Markdownの入力補助"wmd"をAdmin siteで使う
ModelFormでfieldのwidgetを変更する
動的なformを作る 6 - Dynamic Inline Admin site編
Formsetsを使う3 - inlineformset_factory編
動的なformを作る 5 - django-dynamic-formset編
Formクラスからメディアを定義する
複数のmodelを結合する 2 - Proxy model編
複数のmodelを結合する 1
ModelFormでfieldの表示順番を変える
Admin siteのwidgetを個別に変更する
formfield_overridesを使ってAdmin siteのwidgetを変更する
Admin siteのlist_displayをカスタマイズする - リンク編
Admin siteのlist_displayをカスタマイズする - 基本編
Admin siteのTextareaの高さを自在に変更する - admin.py編