在django中扩展用户模型 - 检索数据

时间:2012-10-20 16:06:27

标签: django

我使用以下模型扩展了用户模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    designs = models.ManyToManyField('Design', blank=True)
    prints = models.ManyToManyField('Print', blank=True)
    rating = models.IntegerField(null=True, blank=True)
    reliability = models.IntegerField(null=True, blank=True)
    av_lead_time = models.IntegerField(null=True, blank=True)

我已经确认此OneToOne字段有效,因为它包含在admin的用户字段中。现在我需要用它来创建一个用户字段的html表(User和UserProfile)。我正在尝试以下代码,但我没有得到任何回报:

user_list = User.objects.all()
    return render_to_response('index.html', {
        'user_list': user_list    
    })

模板:

{% for user in user_list %}
    <tr>
        <td>{{ user.rating }}</td>
        <td>{{ user.reliability }}</td>
        <td>4</td>
        <td>2</td>
        <td>96</td>
        <td>£4.56</td>
        <td class="success printButton radius">Add to Cart</td>
    </tr>
{% endfor %}

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

user_listQuerySetUser个对象,没有您要查找的属性。

您应该使用user.get_profile.ratinguser.get_profile.reliability

确实,如果您将设置User设置为AUTH_PROFILE_MODULE类型,get_profile()将返回与UserProfile相关联的配置文件。在模板中,您无需使用()user.get_profile可让您访问user的个人资料。

您还需要确保用户实际上首先拥有个人资料。


Django 1.5中的配置文件正在消失,所以现在可能不是开始使用它们的最佳时机!