django中的get_user_model(),settings.AUTH_USER_MODEL和User之间有什么区别?
答案 0 :(得分:0)
get_user_model()
应该直接引用用户,而不是直接引用用户 使用django.contrib.auth.get_user_model()建立模型。此方法将 返回当前活动的用户模型-自定义用户模型(如果有) 指定,否则指定用户。 Read more
设置。AUTH_USER_MODEL
如果创建自定义User
模型,则必须将此模型添加到设置中
用户
如果您不使用自定义User
模型,则无需将其添加到settings.py
文件中。只需在需要时导入模型。
答案 1 :(得分:0)
它们有不同的用例。
在处理“未知”用户模型时,您需要使用get_user_model()
或settings.AUTH_USER_MODEL
来引用用户模型。
例如。您正在编写将在不同的应用程序中使用的模块,该模块可能会使用自定义的用户模型。
如果您正在编写一个简单的应用程序,则不会重复使用它,如果您愿意,可以使用User
模型,如果您对其进行了自定义,则可以从模型中导入,也可以从Django本身中导入。例如。 from myapp.models import MyUserModel
特别是,您必须使用:
get_user_model()
,当您需要导入用户模型以对其进行查询时。例如。 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()
ManyToManyField ,
OneToOneField时尝试使用or
用户,则可能会出现循环导入问题。
如果要为用户模型提供自定义实现,则还必须在settings.AUTH_USER_MODEL
中设置settings.py
。例如。 AUTH_USER_MODEL='myapp.MyUserModel