【问题标题】:extending user model in django - retrieving data在 django 中扩展用户模型 - 检索数据
【发布时间】:2012-10-11 00:16:11
【问题描述】:

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

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 字段有效,因为它包含在管理员的用户字段中。现在我需要用它来创建一个用户字段(包括用户和用户配置文件)的 html 表。我正在尝试以下代码,但没有返回任何内容:

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 %}

谁能帮忙?

【问题讨论】:

  • @danihp 不完全是:babbaggeii 不知道他必须访问用户个人资料。
  • 我刚刚尝试使用 {{ request.user.username }} 并没有返回任何内容。我还需要添加其他内容吗?
  • @babbaggeii 要使用{{ request.anything }},您需要使用RequestContext,您应该始终一直使用它。

标签: django


【解决方案1】:

user_listQuerySetUser 对象,不具有您要查找的属性。

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

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

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


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

【讨论】:

  • 我还必须包含其他内容吗?我刚刚尝试过 {{ user.get_profile.rating }} 和 {{ user.username }},它们都返回空白。
  • @babbaggeii 您确定您的user_list 中有任何内容吗?你能用 {% debug %} 来调查吗?
猜你喜欢
  • 2017-12-20
  • 2011-07-17
  • 2016-10-12
  • 2011-02-28
  • 2013-12-06
  • 2018-01-21
相关资源
最近更新 更多