我在Ubuntu 12.04上使用Python 2.7的Django 1.4。Django模型过滤器不拉对象
我有一个模板,应该显示产品和每个产品的产品功能列表,并出于某种原因功能不显示在模板中。
这里是视图:
@login_required
def view_products(request):
"""
.. function:: view_products()
View the Products
:param request: Django Request object
"""
data = { 'user' : request.user }
if (request.user.is_authenticated() and request.user.is_superuser):
products = Products.objects.all()
add_feature_form = rsb.forms.AddProductFeatureForm();
data.update({ 'form' : add_feature_form })
data.update({ 'products' : products })
data.update(csrf(request))
return render_to_response("view_products.html", data)
return render_to_response("index.html", data)
这里是模板,以产品功能的工作的一部分:
<table>
{% for product in products %}
<tr>
<td align="right">Product Name:</td><td>{{ product.name }}</td>
</tr>
<tr>
<td align="right">Price:<br /></td><td>${{ product.price }}</td>
</tr>
<tr>
<ul>
{% for productfeature in product.productfeature_set.all %}
<form action="/removeProductFeature/" method="post">{% csrf_token %}
<li>
{{ productfeature.feature }}
<input type="hidden" name="feature" value={{ productfeature.feature }}>
<input type="hidden" name="product_id" value={{ product.id }}>
<label class="formlabel"> </label><input type="submit" value="Remove ►">
</tr>
</form>
{% endfor %}
</ul>
</tr>
<tr>
<form action="/addProductFeature/" method="post">{% csrf_token %}
<table>
<tr>
<td align="right"><label class="formlabel">Add Feature:<br /></label></td><td>{{ form.feature }}</td>
</tr>
<input type="hidden" name="product_id" value={{ product.id }}>
<tr>
<td align="right"><label class="formlabel"> </label></td><td><input type="submit" value="Add ►"></td>
</tr>
</form>
</table>
</tr>
{% endfor %}
</table>
基本上这个模板会显示出产品。每个功能都将在下方列出,并可选择“删除”该功能。然后,在底部,可以添加其他功能的字段。
现有的功能根本不显示。有关我可能会做错什么的建议?
更新1:
我错过了在模板中s
。 product.productfeatures_set.all
不是product.productfeature_set.all
。我很好走。谢谢大家!
我可以告诉你是什么导致了错误:'.filter()'返回一个'QuerySet',因此你的'product_features'列表是'QuerySet'对象的集合;但是你需要重新思考你对问题的态度。查看[跨越关系的查找](https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) –