如何在现有的Django项目上使用自定义用户模型?

时间:2019-06-18 19:34:29

标签: python django

在我的Django应用中,我一直在使用OneToOneField为用户模型添加额外的字段。但是,我觉得这种方式似乎不是无缝的,因为我必须通过user.profile.address来使用额外的JOIN访问额外的字段,即使我可以使用select_related来减少查询数量。

users / models.py

from django.contrib.auth.models import User
from django.db import models


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    phone_number = models.CharField(max_length=20)
    address = models.CharField(max_length=50)

此外,我需要使用电子邮件代替用户名进行用户身份验证。在这方面,我觉得我应该通过执行以下操作来使用自定义用户模型。但是,我知道这种方式将与生产数据库中的现有用户模型产生冲突。

users / models.py

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
    is_active = models.BooleanField(_('active'), default=True)
    ...

由于它已启动并正在运行数据库,所以我无法重新开始。在这一点上,有谁知道是否有一种方法来保留自定义用户模型并保留现有数据?

0 个答案:

没有答案