ЧЕГО ОТЛИЧАЕТСЯ МЕЖДУ get_user_model (), settings.AUTH_USER_MODEL и USER в django? - PullRequest
0 голосов
/ 16 февраля 2019

ЧТО ТАКОЕ РАЗЛИЧИЕ МЕЖДУ get_user_model (), settings.AUTH_USER_MODEL и User в django?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

У них разные варианты использования.

Вам необходимо использовать get_user_model() или settings.AUTH_USER_MODEL для ссылки на модель пользователя при работе с "неизвестной" моделью пользователя .Например, вы пишете модуль, который будет использоваться в различных приложениях, который может использовать пользовательскую модель пользователя.

Если вы пишете простое приложение, которое не будет повторно использоваться, если вы предпочитаете, вы можете использоватьUser модель, которую вы можете импортировать из вашей модели, если вы настроили ее, или из самого django.Например, from myapp.models import MyUserModel

В частности, вы должны использовать:

  • get_user_model(), когда вам нужно импортировать модель User для запроса.Например,
User = get_user_model()
User.objects.filter(...)
  • settings.AUTH_USER_MODEL, когда вам нужно сослаться на модель пользователя в ForeignKey, ManyToManyField или OneToOneField.Например,
class MyModel(models.Model):
 user = models.ForeignKey(settings.AUTH_USER_MODEL)

Если вы попытаетесь использовать get_user_model() при создании ForeignKey , ManyToManyField or OneToOneField`, у вас могут возникнуть проблемы с циклическим импортом.

Вам также придетсяустановите settings.AUTH_USER_MODEL в вашем settings.py, если вы хотите предоставить пользовательскую реализацию для пользовательской модели.Например AUTH_USER_MODEL='myapp.MyUserModel

0 голосов
/ 16 февраля 2019

get_user_model ()

Вместо прямого обращения к пользователю, вы должны ссылаться на модель пользователя с помощью django.contrib.auth.get_user_model ().Этот метод возвращает текущую активную пользовательскую модель - пользовательскую модель пользователя, если она указана, или User в противном случае. Подробнее

settings.AUTH_USER_MODEL

Если вы создаете пользовательскую модель User, вам необходимо добавить эту модель в свойнастройки

Пользователь

Если вы не используете пользовательскую модель User, вам не нужно добавлять ее в файл settings.py.Просто импортируйте модель, когда вам нужно.

...