首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django 2.1模型导入自定义用户模型

Django 2.1模型导入自定义用户模型
EN

Stack Overflow用户
提问于 2018-11-17 23:19:14
回答 1查看 833关注 0票数 1

我一直在我的Django 2.1项目中开发一个扩展的用户模型。我很想知道,我将CustomUser模型导入到另一个模型(用作ForeinKey)的方式是否是正确的。

我在过去遇到过一些语句,表明简单地从管理应用程序导入用户模型是不正确的,而是从django.conf导入它。

从基本用户模型导入的示例:

代码语言:javascript
复制
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:

代码语言:javascript
复制
class CustomUser(AbstractUser):

    objects = CustomUserManager()

    def __str__(self):
        return self.username

通过设置(如上面所示)导入此模型更好,还是在下面(在我的Post应用程序中)导入该模型是正确的方法:

posts/models.py:

代码语言:javascript
复制
from users.models import CustomUser

class Post(models.Model):
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, default=1)

我认为这是错误的做法,但我不知道为什么,谁能让我知道为什么以上不是最好的做法?注意:尽管如此,它确实能完成任务。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-18 01:37:57

你进口的方式没有任何问题。导入的“设置”方式仅仅是访问底层模型的一种周全方式,因为Django允许您使用自定义模型进行用户身份验证处理。

然而,更好的方法是使用“惰性”加载方法,它根本不需要任何导入语句:

代码语言:javascript
复制
user = models.ForeignKey('CustomUser', on_delete=models.CASCADE, default=1)

顺便说一句,在default上使用ForeignKeyField时要小心。您需要绝对确定您所提供的默认值已经存在,并且永远不会从数据库中消失。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53356489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档