に基づいて制限ユーザー「を削除/変更することができます」権限はだから私は、Djangoの認証ユーザモデルを拡張するために、1対1のフィールドを追加しました:ジャンゴ:1対1のフィールド
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
division = models.ForeignKey(Division, on_delete=models.CASCADE)
私が欲しいもの達成するためには、すべての従業員が他の従業員オブジェクトを変更する権限を持ちますが、その従業員が属する部門に属するものに限定されます。
私は、ユーザーと従業員オブジェクトを追加/変更/削除する権限を持つ「従業員」アクセス許可グループを作成しました。
は今、各従業員は、ユーザーオブジェクトの両方の従業員のすべてとすべてのための「変更できるの許可を持っています。
私はOneToOneFieldでdjangoの管理変更リストをフィルタリングして、各従業員だけが変更リスト内の自分の部門から従業員を見ることができました。
問題は、別の部門のユーザーを変更するために手動でURLを入力すると、ユーザーがこのユーザーを変更または削除できるということです。同様に、スーパーユーザー(ユーザー1)も変更/削除することができます。次へ移動:
http://localhost:8000/admin/auth/user/1/change/
トリックを行います。
この問題を解決する私のアイデアは、authユーザー変更メソッドをオーバーライドして 'division-or-superuser'チェックを追加することでしたが、これはハッキーです。部門別に変更URLへのアクセスを制限したいのですが、これを達成する方法はまだ見つかりませんでした。
ありがとうございました!
ありがとうございます:良い解決策と思われます。しかし、私はそれを試して、それはNameErrorを投げた:名前 '自己'は定義されていません.. – DeBaze
私はlimit_choices_toが使用されることができると思うので、それは少し詳細を洗練される必要があります: '従業員':**すべて従業員は「自己決定」**に接続していますか? – DeBaze
@DeBazeは私が今テストする設定がないので、 'self.'を省略して(上記の私の編集のように)、動作するかどうかを知らせてみてください。 –