我一直在我的Django 2.1项目中开发一个扩展的用户模型。我很想知道,我将CustomUser模型导入到另一个模型(用作ForeinKey)的方式是否是正确的。
我在过去遇到过一些语句,表明简单地从管理应用程序导入用户模型是不正确的,而是从django.conf导入它。
从基本用户模型导入的示例:
from django.conf import settings
User = settings.AUTH_USER_MODEL
...
class <ModelName>(models.mode):
user = ForeignKey(User, on_delete=models.CASCADE, default=1)现在我使用的是CustomUser模型(扩展AbstractUser),
用户/Models.py:
class CustomUser(AbstractUser):
objects = CustomUserManager()
def __str__(self):
return self.username通过设置(如上面所示)导入此模型更好,还是在下面(在我的Post应用程序中)导入该模型是正确的方法:
posts/models.py:
from users.models import CustomUser
class Post(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, default=1)我认为这是错误的做法,但我不知道为什么,谁能让我知道为什么以上不是最好的做法?注意:尽管如此,它确实能完成任务。
谢谢!
发布于 2018-11-18 01:37:57
你进口的方式没有任何问题。导入的“设置”方式仅仅是访问底层模型的一种周全方式,因为Django允许您使用自定义模型进行用户身份验证处理。
然而,更好的方法是使用“惰性”加载方法,它根本不需要任何导入语句:
user = models.ForeignKey('CustomUser', on_delete=models.CASCADE, default=1)顺便说一句,在default上使用ForeignKeyField时要小心。您需要绝对确定您所提供的默认值已经存在,并且永远不会从数据库中消失。
https://stackoverflow.com/questions/53356489
复制相似问题