Django - 如何根据具有OneToOneField的用户模型查询用户配置文件

时间:2017-03-22 16:29:21

标签: python django

我正在使用Django和新编程。我想知道如何查询与User模型具有OneToOne关系的用户的配置文件。这是我的代码:

models.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

的用户的company_name或国家/地区是什么

旁边的注释也是我正在做的最佳做法,以便在Django中捕获有关用户的其他信息?

1 个答案:

答案 0 :(得分:1)

您可以像以下一样获取用户并使用其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字段添加到用户模型。