get_user_model() 和从 auth 导入用户之间的区别

WIS*_*SAM 5 django django-models

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

class MyModel(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,default=None)
Run Code Online (Sandbox Code Playgroud)

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

1)通过导入当前用户:

from django.contrib.auth.models import User 
Run Code Online (Sandbox Code Playgroud)

或者

2)将用户设置为:

from django.contrib.auth import get_user_model

User = get_user_model()
Run Code Online (Sandbox Code Playgroud)

我明白,如果我没有错,两者都会起作用!!

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

Ala*_*air 6

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

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

请注意,文档settings.AUTH_USER_MODEL建议您在外键中使用。

class MyModel(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,default=None)
Run Code Online (Sandbox Code Playgroud)