python - Django - 如何基于具有 OneToOneField 的用户模型查询用户个人资料

标签 python django

我正在使用 Django,并且是编程新手。我想知道如何查询与用户模型具有 OneToOne 关系的用户的个人资料。这是我的代码:

模型.py:

class User(models.Model):

    email = models.EmailField(unique=True, null=True)
    date_joined = models.DateTimeField(default=datetime.now)
    username = models.CharField(max_length=22)

class UserProfile(models.Model):

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    company_name = models.CharField(max_length=500)
    contact_person = models.CharField(max_length=255)
    country = models.CharField(max_length=100)
    city = models.CharField(max_length=100)

如果用户注册并在验证后填写了他的个人资料。我如何通过views.py查询数据库,对于任何特定用户,他的UserProfile信息是什么。例如,电子邮件 example@examplemail.com 的用户的公司名称或国家/地区是什么

顺便说一句,这也是我在 Django 中捕获有关用户的其他信息的最佳实践吗?

最佳答案

您可以获取用户并使用其 UserProfile,如下所示:

# Make sure you create a UserProfile when you create a new User
user = User.objects.get(email='example@examplemail.com')
user.userprofile.company_name
user.userprofile.country

是的,这是向默认 django 用户模型添加额外字段的推荐方法。请参阅this问题。如果您使用自己的用户模型,则只需将 UserProfile 字段添加到用户模型即可。

关于python - Django - 如何基于具有 OneToOneField 的用户模型查询用户个人资料,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42957533/

相关文章:

python - 在 Django 中自定义 JSON 序列化器

database - 表中的独特组合

python - Heroku:ModuleNotFoundError:没有名为 'requests' 的模块

python - Tensorflow 精度为 0.99,但预测很糟糕

python - 这个错误是什么意思 : ValueError: unknown POST form encoding type ' ' (and how to solve it? )

python - Numba nopython 模式的三对角矩阵算法

python - Django manage.py runserver 语法无效

python - 使用 Python lxml 连续写入输出文件

python - 如何只获取父目录的名称,而不是完整路径?

django - verbose_name 或 help_text 中的重音/特殊字符(例如,ñ)?