如何在Django中将字段保留在用户模型中并添加一些额外的字段

时间:2019-10-25 03:57:28

标签: django django-models

我想在我的用户模型中添加一些额外的字段,并使用从abstractuser类继承的方法读取自定义用户模型,但是当我实现用户模型时,Django用户名字段等消失了。

一种解决方案是使用其他模型(例如个人资料),但我想向Django用户模型添加额外的字段。这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用自定义的用户模型:

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    """
    Custom User Model 
    """

    TIMEZONES = tuple(zip(pytz.all_timezones, pytz.all_timezones))

    username = models.CharField(max_length=255, unique=True)
    full_name = models.CharField(max_length=255, blank=True, null=True)
    email = models.CharField(max_length=255, unique=True)
    image = models.ImageField(upload_to=get_image_path, blank=True, null=True)
    timezone = models.CharField(max_length=32, choices=TIMEZONES, default="UTC")

    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["username"]

    def __str__(self):
        return self.email

您将必须在settings.py文件中注册您的自定义模型:

# Registering the Custom User Model
AUTH_USER_MODEL = 'my_app.User'