我正在尝试创建多个用户类型,其中一个用户可以是多个类型。这是我使用的模型类:
class Role(models.Model):
'''
The Role entries are managed by the system,
automatically created via a Django data migration.
'''
STUDENT = 1
TEACHER = 2
SECRETARY = 3
SUPERVISOR = 4
ADMIN = 5
ROLE_CHOICES = (
(STUDENT, 'student'),
(TEACHER, 'teacher'),
(SECRETARY, 'secretary'),
(SUPERVISOR, 'supervisor'),
(ADMIN, 'admin'),
)
id = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, primary_key=True)
def __str__(self):
return self.get_id_display()
class User(AbstractUser):
roles = models.ManyToManyField(Role)
当我从django管理面板创建用户时,roles字段应该允许我选择多个用户类型,但它却显示了一个空白框。Image of the admin panel.
1条答案
按热度按时间axzmvihb1#
从概念上讲,你只需要5个角色。进入管理员的角色,并创建一个每种类型。您应该看到在此之后填充的user_role字段列表
您认为它的工作方式只有在Role是User的choice-type字段时才有效。由于Role是它自己的模型,因此您需要创建要在字段中使用的类型。想象一下,如果你选择其他用户,你想在一个多对多的关系。您需要从其他实际用户记录中进行选择--同样的原则也适用于这里。