問題タブ [django-guardian]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - django-guardian の assign_perm で DoesNotExist エラーが発生するのはなぜですか?
django-guardian を使用してユーザー権限をタスクに割り当てようとしていますが、エラーが発生しています。
task/models.py の Task クラス内には、次のものがあります。
入ると
python manage.py シェル
これらのアクセス許可を割り当てようとすると、エラーがスローされます。
これが私が試みていることです:
そして、ここにエラーがあります:
DoesNotExist: クエリに一致する権限が存在しません。
私が間違っていることを誰かが知っていますか?django-guardian ヘルプの指示に従ったと思いますが、何か見落としているのでしょうか?
python - Guardian.shortcuts.get_objects_for_user について理解する
django-guardian 関数 get_objects_for_user の動作を理解できません。グループ オブジェクトの権限を割り当てていますが、get_objects_for_user にはそれらの権限がないようです。
ただし、ドキュメントは非常に明確に見えます。
どこからデバッグを開始すればよいかさえわかりません。助言がありますか?
アップデート:
私のモデルは次のように定義されています。
django - django-guardian と一緒に django-filter を使用する
私は作るのに失敗し、一緒django-filter
にdjango-guardian
働きます。私が必要としているのはItemsFilterView
、ユーザーが表示権限を持つすべてのアイテムを一覧表示してフィルターできるようにすることです。以下は、最も関連性が高いと思われる私のコードの部分です。リクエストに応じてさらに追加できます。
get_objects_for_user(request.user, 'view_item')
クエリセットを取得する前に、許可されたアイテムのみにクエリセットを絞り込むために使用する必要があると思いますdjango-filter
が、追加する適切な場所が見つかりません。
django - ジャンゴガーディアン。権限リストをフィルタリングする方法は?
django-guardian
権限の管理に使用しています。デフォルトでは、各モデルにはadd
、change
、 の3 つのパーマがありdelete
ます。たとえばview
、独自のアクセス許可を追加すると、4 つすべてが [ユーザー管理] タブに表示され、4 つすべてが [モデル オブジェクト管理] タブに表示されます。
パーミッションをフィルタリングできることはわかっています: Django admin - パーミッション リストの変更
しかし、モデル オブジェクト管理タブでパーミッションをフィルターする方法がわかりません。それは可能ですか?
python - django-guardian カスタム ユーザー権限
設定
私はdjango-guardianを使い始めたばかりで、すぐにいくつかの障害に遭遇しました。AbstractBaseUser クラスを拡張してカスタム ユーザーを使用しています。この例に従って、models.py と admin.py をセットアップしました。また、開発者ガイドの構成ガイドに従ってガーディアンをセットアップしました。
問題
django-guardianは、ユーザーに関連する権限を取得AttributeError: type object 'MyCustomUser' has no attribute 'groups'
しようとするたびにエラーをスローします (MyCustomUser は私のカスタム ユーザー クラスです) 。ただし、上記のエラーをスローする呼び出し。guardian_userobjectpermission
get_perms
管理ページから権限を編集しようとすると、同じエラーが表示されます。(プログラムで追加されたアクセス許可はここには表示されません。:/) テストするために小さな manage.py タスクを書きました:
考えられる解決策
認証バックエンドの設定に問題がある可能性があります。現在、次のように設定しています:
AUTHENTICATION_BACKENDS = (
)
多分カスタムユーザーを実装する=>カスタムグループを変更/実装しますか?現在、admin.py に admin.site.unregister(Group) がありますが、変更しても役に立ちません。
開発者が警告しているように、ガーディアンはカスタム ユーザーと互換性がない可能性があります。
python - django-guardian - AUTH_USER_MODEL は、インストールされていないモデル「auth.User」を参照しています
django-guardian を自分のアプリで動作させようとしています。django-guardian ドキュメントのインストールと構成の手順に従いました。「ImproperlyConfigured: AUTH_USER_MODEL refer to model 'auth.User' that has not been installed」というエラーで権限の割り当てに失敗します。
関連する Django ドキュメントを読み、AUTH_USER_MODEL 設定がカスタム ユーザー モデルの使用時に「app_label.UserModel」形式を使用することを理解しました。私はカスタム ユーザー モデルを使用していませんが、デフォルトの django モデルを使用しています。
私がインターネットで見つけたすべての問題と解決策は、私には当てはまらないカスタム ユーザー モデルに関連していました。
私はdjango 1.6.1とdjango-guardian 1.1.1を使用しています。dj-guardaian チュートリアル:
http://django-guardian.readthedocs.org/en/latest/userguide/assign.html
settings.AUTH_USER_MODEL = 'guardian.User' を無駄に設定しようとしました。
どんな助けでも大歓迎です!
乾杯
これらは正確な手順です(設定をインポートした後):
設定.py
python - Python Django (Guardian): モデルの m2m フィールドに応じてデータを編集する
管理者インターフェースを機能させるのに本当に問題があります。モデルがあり、そのモデル内にグループ化する m2m フィールドがあります。
ここで、モデルを保存するときに、これらのグループに特別な表示権限を与えて、それらのグループのメンバーだけがそのモデルのオブジェクトを表示できるようにします。オブジェクトごとのアクセス許可にdjango-guardianを使用しています。したがって、私のモデルの保存方法では、次のようなことを行います。
また、post_save シグナルを使用しようとしましたが、問題は、変更を行うために管理者インターフェースの保存ボタンを常に 2 回押していることです(グループは常に正しい方法で追加されますが、アクセス許可は追加されるだけです)。 2 回目は、管理インターフェイスの [保存] ボタンを使用してモデルを保存します) では、ここで何が行われているのでしょうか? 誰でも助けることができますか?
- - 編集 - -
私の解決策: 次のように、permission-assignment-code を ModelAdmin クラスに移動しました。
admin.py
python - admin 内のリストビューを高速化するために django アーキテクチャを最適化する
大量のデータ (研究出版物、数百人の従業員など) とセキュリティ上の制約があるため、django-guardian を使用してオブジェクトのアクセス許可を処理することを考えさせられた、会社の中規模サイトを開発しています。しかし今、私はこれが管理者内で遅くなる可能性があることに気付きました.
かなり問題なく動作するように見える redis キャッシュを既に実装していますが、それでも大きなリスト ビュー (数百の要素) をロードするには長い時間がかかります。
これまでのところ、次のセットアップを使用しています。
例として、これは Person モジュールで、リストビューのロードには時間がかかります (スーパーユーザーとしてではなく、その場合は非常に高速です。これが、問題が django-guardian の複数の関係にあると私が考える理由です):
ボトルネックが私の管理者クラスにもある可能性があることを理解しています。これは私たちが使用しているものです:
何かアドバイスをいただけますか、または管理インターフェース内に統合できる可能性のある解決策を提案していただけますか? :-)
前もって感謝します!
編集:
django-debug-toolbar を使用すると、django-guardian へのクエリが非常に少なく、非常に高速 (すべて 6 ミリ秒未満) であることがわかります。一方、263 のリストビューに対して 7500 を超えるクエリがあり、ビューの生成に最大 46 秒かかります。それらのほとんどすべては、役に立たないデータをロードするために、定義したモデル内にあります (私はそう思います): 名前とオブジェクト ID だけが必要だと思います。
queryset() メソッド内でロードされるデータの量を制限するにはどうすればよいですか? ありがとう。