Django中多用户类型的多对多字段

xfyts7mz  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(85)

我正在尝试创建多个用户类型,其中一个用户可以是多个类型。这是我使用的模型类:

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.

axzmvihb

axzmvihb1#

从概念上讲,你只需要5个角色。进入管理员的角色,并创建一个每种类型。您应该看到在此之后填充的user_role字段列表
您认为它的工作方式只有在Role是User的choice-type字段时才有效。由于Role是它自己的模型,因此您需要创建要在字段中使用的类型。想象一下,如果你选择其他用户,你想在一个多对多的关系。您需要从其他实际用户记录中进行选择--同样的原则也适用于这里。

相关问题