2009-06-20 5 views
4

外部ユーザーにdjango管理者ページを使用できるかどうかは疑問でした。Django admin - ユーザーによるアクセスを制限する

だが、私はこれらのモデルを持っているとしましょう:

class Publisher(models.Model): 
    admin_user = models.ForeignKey(Admin.User) 
    .. 

class Publication(models.Model): 
    publisher = models.ForeignKey(Publisher) 
    .. 

私がどうなるかADMIN_USER正確にはわからない - おそらくそれは、管理者ユーザの電子メールだろうか?

とにかく。管理者ユーザーがその管理者ユーザーに関連付けられているパブリケーションを追加/編集/削除するだけの方法はありますか?

-Thanks! -Chris

答えて

15

独自のアプリケーションでより細かい権限が必要な場合は、Djangoの管理アプリケーションが、ModelAdminのサブクラスでオーバーライドできる次のメソッドを使用してこれをサポートしていることに注意してください。

  • queryset(self, request):モデルのためのオブジェクトの管理者のリストで使用するためにクエリセットを返す必要があります。これらのメソッドのすべてが特定の認証済みユーザーに基づいてカスタマイズを可能にし、引数として現在のHttpRequestオブジェクトを受け取ることに注意してください。このQuerySetに存在しないオブジェクトは表示されません。
  • has_add_permission(self, request):オブジェクトの追加が許可されている場合はTrueを返し、そうでない場合はFalseを返します。
  • has_change_permission(self, request, obj=None): objの編集が許可されている場合はTrueを返し、そうでない場合はFalseを返します。 objがNoneの場合は、この型のオブジェクトの編集が一般的に許可されているかどうかを示すTrueまたはFalseを返さなければなりません(例えば、Falseは、現在のユーザがこの型のオブジェクトを編集することを許可されていないと解釈されます)。
  • has_delete_permission(self, request, obj=None): objの削除が許可されている場合はTrueを返し、そうでない場合はFalseを返します。 objがNoneの場合は、この型のオブジェクトの削除が一般的に許可されているかどうかを示すTrueまたはFalseを返さなければなりません(例えば、Falseは、現在のユーザがこの型のオブジェクトを削除することを許可されていないと解釈されます)。

[django.com]

+0

+1私は管理者リストのクエリセットオプションを知らなかった。 – SingleNegationElimination

0

django管理者は、ある程度まで制限することができます。特定のユーザーの場合、まず管理サイトにログインするためには管理者権限が必要です。このフラグが設定されている場合は、すべての管理ページを表示できます。表示を制限したい場合、それは単に実装されていないので、運が悪いです。そこから、各ユーザーには、管理サイトの各モデルに対する作成、更新、および削除のためのアクセス権のホストがあります。これを処理する最も便利な方法は、グループを作成してグループに権限を割り当てることです。

1

私はクリスの答えは質問が頼まれた時には有用であった参照してください。 しかし、これはほぼ2016年です。Django Admin panelのエンドユーザへのアクセスを制限する方が簡単になると思います。

Djangoの認証システムを提供します。

グループ:複数のユーザーにラベルと権限を適用する一般的な方法を。

特定のアクセス許可を追加し、そのグループを管理パネルまたは書き込みコードを介してユーザーに適用することができます。

これらの特定のグループにユーザーを追加した後、管理者はこれらのユーザーに対してis_staffフラグを有効にする必要があります。

管理者は、制限付き登録モデルにアクセスできます。 私はこれが役立つことを願っています。

関連する問題