【问题标题】:extending User model using django-username-email Package使用 django-username-email 包扩展用户模型
【发布时间】:2018-06-05 18:55:30
【问题描述】:

我是 django 的初学者,我真的需要你的帮助.. 我正在尝试扩展 Django 提供的用户模型,以便仅使用电子邮件和传递而不是用户名登录用户

为此,我使用了很棒的包https://pypi.org/project/django-username-email,它提供了一种非常简单的方法。

但是我也想扩展它以添加诸如“工作”之类的字段

我试图这样做,但这并不能帮助我朝着目标前进。

from django.db import models
from django.contrib.auth import get_user_model
# Create your models here.

User = get_user_model()


class CustomUser(User):
    position = models.CharField(blank=True, max_length=255)

您能帮我扩展一个扩展的 UserModel 吗? 谢谢你

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    为了扩展您的模型,您只能继承 abstract 模型。对于您当前的目的,您应该继承 AbstractBaseUser

    from django.contrib.auth.models import AbstractBaseUser
    class CustomUser(AbstractBaseUser):
        position = models.CharField(blank=True, max_length=255)
    

    【讨论】:

    • 但是它会考虑到我使用 User = get_user_model() 和包获得的当前用户模型吗?
    • 听不懂你说什么,如果你想注册CustomUser模型作为你的用户模型你应该设置它是设置'AUTH_USER_MODEL'AUTH_USER_MODEL = 'app_name.model_name'
    • 现在我已经使用包 django-username-email 扩展了用户模型,但我需要更多地扩展它..
    • 如果您想在 customuser 模型中包含django-username-email 中定义的字段,那么您应该在 AbstractModel 中定义这些字段。将任何模型设为 AbstractModel 只需在元类中将 abstract 设置为 True。
    猜你喜欢
    • 2012-07-18
    • 2016-10-12
    • 2011-02-28
    • 2013-12-06
    • 2018-01-21
    • 2013-01-23
    • 2018-04-24
    相关资源
    最近更新 更多