get_user_model() 、settings.AUTH_USER_MODEL 和 django 中的用户有什么区别?
最佳答案
它们有不同的用例。
您需要使用 get_user_model()
或 settings.AUTH_USER_MODEL
来引用用户模型在处理“未知”用户模型时。
例如。您正在编写一个将在不同应用程序中使用的模块,这些应用程序可能使用自定义用户模型。
如果您正在编写一个不会被重用的简单应用程序,如果您愿意,您可以使用 User
模型,如果您自定义它,您可以从您的模型中导入它,或者从django 本身。例如。 从 myapp.models 导入 MyUserModel
特别是,你必须使用:
get_user_model()
当你需要导入 User 模型进行查询时。例如。
User = get_user_model()
User.objects.filter(...)
settings.AUTH_USER_MODEL
当您需要在ForeignKey
、ManyToManyField
或OneToOneField
中引用 User 模型时。例如
class MyModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
如果您在创建 ForeignKey、
ManyToManyField或
OneToOneField`时尝试使用用户 get_user_model()
,则可能会遇到循环导入问题。
如果您想为用户模型提供自定义实现,您还必须在 settings.py
中设置 settings.AUTH_USER_MODEL
。例如。 AUTH_USER_MODEL='myapp.MyUserModel
关于python - django 中的 get_user_model() 、settings.AUTH_USER_MODEL 和 USER 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54720133/