前提・実現したいこと
Django 標準のユーザモデルを利用して、ユーザグループのモデルを作成したいです。
ユーザグループはグループリーダーを1人、一般ユーザを複数人登録できる形式を考えています。
発生している問題・エラーメッセージ
通常通り Group
クラスのフィールドに manager
と users
を実装すると、外部参照として User
クラスを 2回指定しているので、以下のようなエラーメッセージが出てしまいます。
platform_rest.Group.manager: (fields.E304) Reverse accessor for 'Group.manager' clashes with reverse accessor for 'Group.users'. HINT: Add or change a related_name argument to the definition for 'Group.manager' or 'Group.users'.
該当のソースコード
該当のソースコードは以下の通りです。
Python
1from django.contrib.auth import get_user_model as user_model 2User = user_model() 3 4 5class Group(models.Model): 6 name: str = models.CharField(max_length=30) 7 manager: User = models.ForeignKey(User, on_delete=models.PROTECT) 8 users: [User] = models.ManyToManyField(User) 9 created_at: datetime = models.DateTimeField(auto_now_add=True) 10 updated_at: datetime = models.DateTimeField(auto_now=True)
試したこと
以下の通り Manager
クラスを作成し、対応する方法を考えましたが、Manager
クラスのユーザの一意性等いちいち管理することが面倒だったため、もっといい方法があるのでは?と思い質問した次第です(Managerクラスの運用方法にもっといい方法がある可能性もありますが)。
Python
1class Manager(models.Model): 2 user: User = models.ForeignKey(User, on_delete=models.CASCADE) 3 created_at: models.DateTimeField = models.DateTimeField(auto_now_add=True) 4 updated_at: models.DateTimeField = models.DateTimeField(auto_now=True) 5 6 7class Group(models.Model): 8 name: str = models.CharField(max_length=30) 9 manager: Manager = models.ForeignKey(Manager, on_delete=models.PROTECT) 10 users: [User] = models.ManyToManyField(User) 11 created_at: datetime = models.DateTimeField(auto_now_add=True) 12 updated_at: datetime = models.DateTimeField(auto_now=True)
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/06 05:10
2019/08/06 05:12