Как я могу использовать пользовательскую модель пользователя в моем существующем проекте Django? - PullRequest
0 голосов
/ 18 июня 2019

В моем приложении Django я использовал OneToOneField, чтобы иметь дополнительные поля для модели User.Но я чувствую, что этот способ не кажется бесшовным, поскольку мне нужно получить доступ к дополнительным полям с помощью дополнительного JOIN, выполнив команду user.profile.address, хотя я могу минимизировать количество запросов с помощью 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)
    ...

Как естьи работает база данных, я не могу начать все сначала.В этом случае кто-нибудь знает, есть ли способ создать пользовательскую модель пользователя, сохраняя существующие данные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...