如何在 Django 1.7 中使用 UserProfile 字段过滤用户?
How to filter users using UserProfile field in Django 1.7?
我正在使用 Django 1.7、Pyton 3.4 和 PostgreSQL 9.1。
我在使用 UserProfile 中的字段过滤用户时遇到问题。
这是我在 models.py
中的用户配置文件
class UserProfile(models.Model):
user = models.OneToOneField(User)
is_agency = models.BooleanField(blank=False, default=False)
customer_linked = models.ForeignKey(Customer, null=True, blank=True)
我现在可以添加新用户,但我想显示配置文件中 'is_agency' 已检查的用户列表和 ForeignKey 中的客户名称。
我正在为自己的观点而苦苦挣扎:
def agency_list(request):
users = UserProfile.objects.filter(is_agency = True)
return render_to_response('agency/list.html', {'users': users}, context_instance=RequestContext(request))
我的模板是:
{% for user in users %}
<tr>
<td>{{ user.username }}</td>
<td> --here Customer's name--</td>
</tr>
{% endfor %}
有什么办法可以修复我的 view.py 和 list.html 吗?
谢谢
保持视图不变并将模板更改为:
{% for profile in users %}
<tr>
<td>{{ profile.user.username }}</td>
<td>{{ profile.customer_linked.name }}</td>
</tr>
{% endfor %}
旁注:要提高速度并减少 DB 命中数,请使用 select_related()
方法:
users = UserProfile.objects.select_related().filter(is_agency=True)
我正在使用 Django 1.7、Pyton 3.4 和 PostgreSQL 9.1。 我在使用 UserProfile 中的字段过滤用户时遇到问题。 这是我在 models.py
中的用户配置文件class UserProfile(models.Model):
user = models.OneToOneField(User)
is_agency = models.BooleanField(blank=False, default=False)
customer_linked = models.ForeignKey(Customer, null=True, blank=True)
我现在可以添加新用户,但我想显示配置文件中 'is_agency' 已检查的用户列表和 ForeignKey 中的客户名称。 我正在为自己的观点而苦苦挣扎:
def agency_list(request):
users = UserProfile.objects.filter(is_agency = True)
return render_to_response('agency/list.html', {'users': users}, context_instance=RequestContext(request))
我的模板是:
{% for user in users %}
<tr>
<td>{{ user.username }}</td>
<td> --here Customer's name--</td>
</tr>
{% endfor %}
有什么办法可以修复我的 view.py 和 list.html 吗?
谢谢
保持视图不变并将模板更改为:
{% for profile in users %}
<tr>
<td>{{ profile.user.username }}</td>
<td>{{ profile.customer_linked.name }}</td>
</tr>
{% endfor %}
旁注:要提高速度并减少 DB 命中数,请使用 select_related()
方法:
users = UserProfile.objects.select_related().filter(is_agency=True)