如标题,我有 3 种类型的用户,每个用户可以有多个角色。
from django.contrib.auth.models import AbstractUser, User
from django.db import models
from django.db.models import CASCADE
from hospital.models import Hospital
class Role(models.Model):
'''
The Role entries are managed by the system,
automatically created via a Django data migration.
'''
DOCTOR = 1
DIRECTOR = 2
PATIENT = 3
ROLE_CHOICES = (
(DOCTOR, 'doctor'),
(DIRECTOR, 'director'),
(PATIENT, 'patient'),
)
id = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, primary_key=True)
def __str__(self):
return self.get_id_display()
class User(AbstractUser):
roles = models.ManyToManyField(Role)
def __str__(self):
return self.roles
class Doctor(models.Model):
# role = models.OneToOneField(User, on_delete=CASCADE)
career = models.TextField(blank=True, max_length = 1000)
class Director(models.Model):
# role = models.OneToOneField(User, on_delete=CASCADE)
members = models.ManyToManyField(Doctor)
class Patient(models.Model):
# personal information like above.
我正在创建一个模型,但我不知道如何设置 key 。
我是引用上面的网站做的。主任拥有医生并可以对其进行授权。
但是我不知道怎么把 key 给医生或主任。
如果您要发表评论,我会收到错误消息。
我希望你能帮助我。
最佳答案
假设您要为 3 个派生类设置默认的角色
。
从 this post 中汲取灵感.
由于 roles
是多对多关系,您可以覆盖模型的 save
方法(您也可以为此使用信号,但不推荐在你的情况下)。
例如
class Doctor(models.Model):
def save(self, *args, **kwargs):
if not self.id: # object creation
should_add_role = True
super(Doctor, self).save(*args, **kwargs) # do the usual
if should_add_role: # add our defaults
self.roles.add(Role.objects.get_or_create(id=Role.DOCTOR))
关于python - Django,用户在应用程序中可以有多个角色,3种类型的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48849954/