web-dev-qa-db-ja.com

Djangoでのユーザーロールの操作

私はいくつかの質問があります。プロジェクトで、3つのタイプ(複数の場合もある)のユーザーが異なる役割を持つユーザーとの作業が必要です。医師の患者管理者

Django Model Usersの使用を考え、それを拡張してuserprofileモデルを作成しています...しかし、userprofileモデルにはユーザーモデルのフィールドがあるため、さまざまな役割を管理する方法は無視します。 、しかし、私は役割のトピックに対処する方法がわかりません。

1ユーザーは多くのユーザープロファイルを持っている可能性がありますか?知りません

または、ロールタイプを指定してロールモデル/テーブルを作成し、ユーザーモデルとの関係を作成する必要があるかもしれません。これは良い可能性です。

別の可能性(以下のコメントとして)は、Django権限システムを確認して、ユーザーグループを作成し、これらのグループに権限を割り当てることができますが、ここでは編集、作成、および削除のみが可能です本当にモデル?

この問題の対処方法についていくつか混乱しています

このアプリを見つけました。 https://github.com/dabapps/Django-user-roles

誰かがそれについて私を方向付けることができれば、私は非常に感謝します

17
bgarcial

おそらく、これをDjangoの組み込み permissions で動作させることができます。

それはあなたが必要とする以上のものかもしれません。簡単な解決策は、ユーザーにOneToOneFieldを持つロールフィールドを持つUserProfileモデルです。

class UserProfile(models.Model):
  user = models.OneToOneField(User, related_name="profile")
  role = models.CharField()

ロールを設定し、ビュー内のロールでチェックを行います。

user.profile.role = "physician"
user.profile.save()

if user.profile.role == "physician":
  #do physician case here
19
sponrad