adminのqueryset
-methodをオーバーライドして、ユーザーのアイテムのみを表示できます。
def queryset(self, request):
user = getattr(request, 'user', None)
qs = super(MyAdmin, self).queryset(request)
if user.is_superuser:
return qs
return qs.filter(user=user)
has_change_permission
それに加えて、次のように、メソッドとhas_delete_permission
メソッドにも注意する必要があります。
def has_delete_permission(self, request, obj=None):
if not request.user == obj.user and not request.user.is_superuser:
return False
return super(MyAdmin, self).has_delete_permission(request, obj)
同じですhas_change_permission
!
list_select_related
管理者のクエリセットを取得して関連データも関係からすぐに取得する場合にのみ使用され、必要な場合には使用されません。
あなたの主な目標がユーザーが他のオブジェクトを操作できないように制限することだけである場合、上記のアプローチは機能します、それがより複雑になり、ユーザーのような1つの属性からのみアクセス許可を伝えることができない場合は、調べてください行レベルの権限に関するdjangoの提案!