0

管理インターフェイスのどの部分がどのスタッフ メンバーに表示されるかを制限したいと思います。たとえば、ある人は請求関連のアイテムのみを担当し、別の人はカスタマー サポートのみを担当し、3 人目はフル アクセス権を持つ可能性があります。

is_superuser を True に設定することでフル アクセスを提供できますが、それは望ましくないと思います (管理インターフェイスへのアクセス権を持つすべてのスタッフをスーパー ユーザーにしたくはありません)。

is_staff を True に設定することで、スタッフ メンバーが管理インターフェイスにログインできるようにできますが、一度ログインすると、スタッフ メンバーは何にもアクセスできなくなり、「編集する権限がありません」と表示されます。

この質問で説明されている方法を試しましたが、同じ「許可がありません」という結果が得られます。

class MyAdmin(admin.ModelAdmin):
    def has_edit_permission(self, request):
        return True

スタッフがスーパーユーザーにならずに Django 管理インターフェースの一部にアクセスできるようにする方法はありますか?

4

2 に答える 2

6

なんてことはありませんhas_edit_permission。ですhas_change_permission

3 つの許可方法の詳細については、Django ModelAdmin のドキュメントを参照してください。

ModelAdmin.has_add_permission(self, request)

Trueオブジェクトの追加が許可されている場合は返され、Falseそうでない場合は返されます。

ModelAdmin.has_change_permission(self, request, obj=None)

True編集objが許可されている場合は返され、Falseそうでない場合は返されます。objがの場合、またはをNone返して、このタイプのオブジェクトの編集が一般に許可されているかどうかを示す必要があります (たとえば、は、現在のユーザーがこのタイプのオブジェクトを編集することを許可されていないことを意味すると解釈されます)。TrueFalseFalse

ModelAdmin.has_delete_permission(self, request, obj=None)

True削除objが許可されている場合は返され、Falseそうでない場合は返されます。objがの場合、このタイプのオブジェクトの削除が一般に許可されているかどうかを示すためにまたはをNone返す必要があります (たとえば、現在のユーザーがこのタイプのオブジェクトを削除することを許可されていないことを意味すると解釈されます)。TrueFalseFalse

于 2012-04-16T23:05:02.843 に答える
2

あなたがしたいことのために、has_change_permission を上書きしないでください - 「is staff」をチェックすることに加えて、対応するパーミッション (「Can change Xs」) をユーザーやユーザーグループに与えるだけです。

于 2012-04-16T23:43:04.437 に答える