Rat*_*tan 1 python django django-models
Django 中的 get_user_model() ,settings.AUTH_USER_MODEL 和 User 之间有什么区别?
小智 5
他们有不同的用例。
在处理“未知” User 模型时,您需要使用get_user_model()或settings.AUTH_USER_MODEL引用User 模型。例如,您正在编写一个将在不同应用程序中使用的模块,该模块可能使用自定义用户模型。
如果您正在编写一个简单的应用程序,它不会被重用,如果您愿意,您可以使用User模型,如果您自定义它,您可以从您的模型或从 django 本身导入该模型。例如from myapp.models import MyUserModel
特别是,您必须使用:
get_user_model()当您需要导入 User 模型进行查询时。例如User = get_user_model()
User.objects.filter(...)
Run Code Online (Sandbox Code Playgroud)
settings.AUTH_USER_MODEL当您需要在ForeignKey,ManyToManyField或 中引用 User 模型时OneToOneField。例如class MyModel(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)
如果您get_user_model()在创建 ForeignKey ,ManyToManyField orOneToOneField`时尝试使用用户,您可能会遇到循环导入问题。
如果您想为用户模型提供自定义实现,您还必须settings.AUTH_USER_MODEL在您的设置中进行设置settings.py。例如AUTH_USER_MODEL='myapp.MyUserModel
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |