从单独的数据库表中显示用户行时的用户名

时间:2018-01-21 13:36:12

标签: django django-models django-forms django-templates django-views

在我的网站上,我有一个页面,显示我所有用户的个人资料(包含生物,位置等信息)。此数据不存储在我的“用户模型”中,而是存储在名为“个人资料”的模型中。显然,我这样显示这些信息:

views.py

queryset_list = Profile.objects.all()

模板

{% for Profile in queryset_list %}

{{Profile.bio}}

{% endfor %}

我还想显示这些用户的'用户名'(存储在用户模型中,而不是配置文件模型中),但我不知道如何引用与配置文件模型相关的用户模型来获取连接的用户名

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

假设您的个人资料模型与用户模型具有OneToOne关系,而您的个人资料模型看起来像这样

class UserProfile(models.Model):
    Male = 'Male'
    Female = 'Female'
    Other = 'Other'
    GENDER = (
        (Male, 'Male'),
        (Female, 'Female'),
        (Other, 'Other'),
    )
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
    gender = models.CharField(max_length=40, blank=True, choices=GENDER)
    birth_date = models.DateField(null=True, blank=True)
    avatar = models.ImageField(upload_to='avatar_location', null=True, blank=True)
    bio = models.TextField(max_length=500, blank=True)

其中用户归档是与用户模型的一对一关系,您可以从用户模型访问详细信息,如

#views.py
queryset_list = Profile.objects.all().select_related('user')

并在您的模板中

{% for Profile in queryset_list %}
    {{Profile.user.username}}
    {{Profile.bio}}
{% endfor %}