【问题标题】:Django how to link Users to UsermodelDjango如何将用户链接到用户模型
【发布时间】:2021-11-12 20:58:49
【问题描述】:

您好,我对 Django 还很陌生,还没有了解用户的基本概念。 我能够创建一个注册页面来创建用户,这些用户显示在“身份验证和授权 - >用户”的管理页面上。

现在我希望用户登录并创建他们的个人资料。他们应该添加一些额外的信息,如姓名、简历、图片等。 每个用户都应该能够添加和查看自己的个人资料。

为此,我创建了一个模型:

    class Profile(models.Model):
        firstname = models.CharField(max_length=50)
        lastname = models.CharField(max_length=50)
        bio = models.TextField()
        profile_pic = models.ImageField(upload_to="images/")
        def __str__(self):
            return self.firstname + ' | ' + self.lastname

在我的视图和 html 中,我能够将这些信息添加到模型中。 但是我如何才能将这个“个人资料”模型与个人用户联系起来呢?我在这里想念什么?

【问题讨论】:

标签: django model profile


【解决方案1】:

您可以通过在Profile 和默认User 之间添加OneToOneField 关系来做到这一点:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    firstname = models.CharField(max_length=50)
    lastname = models.CharField(max_length=50)
    bio = models.TextField()
    profile_pic = models.ImageField(upload_to="images/")
    def __str__(self):
        return self.firstname + ' | ' + self.lastname

【讨论】:

    【解决方案2】:

    您可以向AUTH_USER_MODEL setting [Django-doc] 发送OneToOneField。此设置包含具有用户模型限定名称的字符串。这比链接到django.contrib.auth.models.UserUser 模型要好,因为如果您稍后创建自定义用户模型,对该用户模型的引用将被更新:

    from django.conf import settings
    
    class Profile(models.Model):
        user = models.OneToOneField(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
        )
        # …

    有关详细信息,请参阅referencing the user model section of the Django documentation

    【讨论】:

    • 谢谢。工作至今。还有一个问题。在配置文件的管理部分,我将获得一个下拉菜单来选择用户。有没有办法让它自动化?姓名、电子邮件等有效。但用户名不是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2013-05-01
    • 2022-10-05
    • 1970-01-01
    相关资源
    最近更新 更多