python - 如何在让管理员在 Django 中默认工作的同时为我的应用程序创建自定义用户模型?

标签 python django

这是我想要完成的:

- 让管理员使用默认方式(用户名和密码)登录到管理页面。

- 让用户使用使用电子邮件而不是密码的自定义用户模型注册/登录到我的网络应用程序。他们还可以关联其他我的管理员不需要的数据。

- 将管理员帐户和用户帐户分离到不同的表中。

我检查了如何通过扩展 AbstracBaseUser 创建自定义用户类,但我得到的结果是我的管理员也成为了新的用户类型。那么我可以让自定义用户模型用于我的应用程序用户,同时保持默认管理系统不变吗?或者我的设计有什么好的替代方案?

最佳答案

推荐的 Django 做法是创建一个指向 User 的 OneToOne 字段,而不是扩展 User 对象 - 这样您就可以通过仅装饰所需的新模型属性(例如)在 Django 的 User 之上构建:

class Profile(models.Model):
    user = models.OneToOneField(User,parent_link=True,blank=True,null=True)
    profile_image_path =  models.CharField(max_length=250,blank=True, null=True)
    phone = models.CharField(max_length=250,blank=True, null=True)
    address = models.ForeignKey(Address,blank=True,null=True)
    is_admin = models.NullBooleanField(default=False,blank=True,null=True)

    class Meta:
       verbose_name = 'Profile'
       verbose_name_plural = 'Profiles'

关于python - 如何在让管理员在 Django 中默认工作的同时为我的应用程序创建自定义用户模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39842758/

相关文章:

python - 索引错误: list index out of range in Python Script

python - Django 代码在本地和服务器上的行为不同

python - AssertionError 无法在获取切片后过滤查询

python - Django 没有反射(reflect) urls.py 的更改

Python,对坐标对进行操作的有效方法

python - PILKit 无法导入 Python 图像库

python - 将季度和财政年度列合并为 pandas 中的日期列

python - 正则表达式仅匹配第二个条目

python - 仅对一个注释列应用过滤器而不影响其他注释列?

python - 使用Django模型库时,在过滤器中创建 "or"语句的语法是什么?