首页 > 解决方案 > Django 中的用户类型模型

问题描述

我对如何插入用户类型感到困惑,我只是 Django 的初学者,但我肯定一直在阅读 Django 中的文档,但我无法理解这个,情况是当我注册新用户时,必须有选择应该与该用户指定的用户类型是管理员还是等,但问题是我认为即使我创建了另一个 table.slight 也没有来自 authuser 的关系表。类似于这个问题资源链接。现在我一直在考虑在 authuser 表中创建自定义用户类型字段,但是在迁移时它没有显示更新的字段并且也喜欢这个问题,有些人或用户没有在 authuser 表示例中触摸或添加任何字段是否可以在 auth_permission 或其他默认表中插入用户类型?我真的很困惑我可以在哪里添加与 authuser 有关系的用户类型。有知道的或者解释一下吗,谢谢

楷模

class AuthUser(models.Model):
  password = models.CharField(max_length=128)
  last_login = models.DateTimeField(blank=True, null=True)
  is_superuser = models.IntegerField()
  username = models.CharField(unique=True, max_length=150)
  first_name = models.CharField(max_length=150)
  last_name = models.CharField(max_length=150)
  email = models.CharField(max_length=254)
  is_staff = models.IntegerField()
  is_active = models.IntegerField()
  date_joined = models.DateTimeField()

  usertype_id = usertype = models.OneToOneField(usertypes,on_delete=models.CASCADE,primary_key=True) 
  () //this is what i want to add

  class Meta:
     managed = False
     db_table = 'auth_user'

class usertypes(models.Model):
  usertype = models.CharField(max_length=264)
  description = models.CharField(max_length=264)
  status = models.CharField(max_length=264)

标签: pythondjango

解决方案


有多种方法可以做到这一点。我推荐的方式是扩展现有的用户模型。

from django.contrib.auth.models import User

class UserType(models.Model):
    user_type = models.CharField(max_length=264)
    description = models.CharField(max_length=264)
    status = models.CharField(max_length=264)

class AppUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    type = models.ForeignKey(UserType, on_delete=models.CASCADE) 

这将创建 2 个额外的表。

  1. user_type 您将在其中拥有您可能想要填写的 UserType 和
  2. app_user 将在哪里存储 django 用户记录及其类型的引用

但是,我认为您应该有充分的理由这样做。Django 允许您将用户分组到用户组中,这正是您想要的。


推荐阅读