我需要从数据库到用户显示几行。例如,我的表Fruits
包含列:name
,color
,price
。所以我希望我的表单生成像紧凑网格视图的html:
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
<tr>
<td>apples</td>
<td>yellow</td>
<td>100$</td>
</tr>
<tr>
<td>pears</td>
<td>green</td>
<td>$80</td>
</tr>
</table>
&#13;
我找到了this问题:
中描述的formset的解决方法class Fruit(Model):
name = CharField(max_length=100)
color = CharField(max_length=100)
price = CharField(max_length=100)
FruitFormSet = modelformset_factory(Fruit, form=FruitForm)
form = FruitFormSet(queryset=Fruit.objects.all())
这有点酷,但是有很多代码,看起来有点笨拙。我想知道我是否可以用django crispy form做类似的事情。
所以我的问题是:
在django中从表中显示多行的最佳方法是什么?我不需要向用户提供编辑方式。我应该使用表格吗?或者我只需要将对象字典传递给模板,迭代它并添加html标签?
答案 0 :(得分:1)
表格用于编辑。由于您不需要编辑值,因此只需将上下文字典中的查询集传递给模板即可。一个例子是:
<强> views.py 强>
def fruit_list(request):
context = {'fruit_list': Fruit.objects.all()}
return render(request, 'fruits/fruit_list.html', context)
<强>水果/ fruit_list.html 强>
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
{% for fruit in fruit_list %}
<tr>
<td>{{ fruit.name }}</td>
<td>{{ fruit.color }}</td>
<td>{{ fruit.price }}$</td>
</tr>
{% endfor %}
</table>