get_user_model () vs settings.AUTH_USER_MODEL использование - PullRequest
0 голосов
/ 05 марта 2020

Я новичок в Django, и я изучаю видеоурок для изучения django. Я пытаюсь понять get_user_model () и настройки.AUTH_USER_MODEL. мой каталог выглядит следующим образом:

| simplesocial
   | accounts
   |  | models.py
   |  | views.py
   |  | forms.py
   | 
   | simplesocial
      |settings.py

# models.py

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


class User(auth.models.User, auth.models.PermissionsMixin):

    def __str__(self):
        return '@{}'.format(self.username)
#forms.py

from django.forms import forms
from django.contrib.auth.forms import get_user_model
from django.contrib.auth.forms import UserCreationForm
from simplesocial import settings


class UserCreateForm(UserCreationForm):

    class Meta:
        model = settings.AUTH_USER_MODEL
        fields = ('username', 'email')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['username'].label = 'Display Name'
        self.fields['email'].label = 'Email Address'
#settings.py
AUTH_USER_MODEL = 'accounts.User' 

Я получаю ошибку ниже

ERRORS:
accounts.User.user_ptr: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
        HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.

Так как у меня есть пользовательская модель, которая будет использоваться. Что я делаю неправильно. Если я заменю настройки. AUTH_USER_MODEL с get_user_model () будет ли он использовать мой пользовательский класс User? Я не мог понять, как работает get_user_model ()

1 Ответ

0 голосов
/ 05 марта 2020

Попробуйте заменить,

from simplesocial import settings 

на

from django.conf import settings

О get_user_model,

Допустим, вы хотите создать модель пользователя, содержащую поля, такие как имя пользователя, пароль, и др c. Но эта модель уже создана django, который является get_user_model, который содержит все поля, которые могут потребоваться пользовательской модели. Так что вам просто нужно импортировать его в свой файл. Поэтому, чтобы сэкономить ваше время, не создавайте одну и ту же модель с нуля (начало).

Об AUTH_USER_MODEL,

в основном используется, когда вы работаете с пользовательской моделью (упоминая об этом в настройках. В файле py мы сообщаем django, что вместо используемой по умолчанию модели django используйте созданную нами пользовательскую модель.

для получения дополнительной информации посетите документацию django, ссылку https://docs.djangoproject.com/en/3.0/* 1017. *

...