get_user_model()与从auth导入User之间的差异

时间:2018-04-27 18:26:54

标签: django django-models

当我需要在模型中使用当前用户时。 假设我有一个带有current_user字段的模型,例如:

class MyModel(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,default=None)

我的理解是用户可以获取:

1)导入当前用户:

from django.contrib.auth.models import User 

2)将用户设置为:

from django.contrib.auth import get_user_model

User = get_user_model()

我知道如果我没有错,两者都会有用!!

那么这两种方法之间的主要区别是什么? 感谢

1 个答案:

答案 0 :(得分:2)

如果您使用默认的User模型,则两种方法都可以使用。

但是,如果您使用的是自定义用户模型(或正在编写可重复使用的应用程序),那么您应该使用get_user_model()来确保获得正确的模型。

请注意,the docs建议您在外键中使用settings.AUTH_USER_MODEL

class MyModel(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,default=None)