У них разные варианты использования.
Вам необходимо использовать 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