【问题标题】:Display multiple rows as grid in django template在 Django 模板中将多行显示为网格
【发布时间】:2015-03-08 17:33:49
【问题描述】:

我需要从数据库向用户显示几行。例如,我有表Fruits 与列:namecolorprice。所以我希望我的表单生成类似于紧凑网格视图的 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>

我找到了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 脆皮表格做类似的事情。

所以我的问题是

在 django 中显示表中多行的最佳方法是什么?我不需要向用户提供编辑它的方法。我应该使用表格吗?或者我只需要将对象字典传递给模板,对其进行迭代并添加 html 标签?

【问题讨论】:

    标签: django twitter-bootstrap django-forms


    【解决方案1】:

    表格用于编辑。由于您不需要编辑值,您可以简单地将上下文字典中的查询集传递给您的模板。一个例子是:

    views.py

    def fruit_list(request):
        context = {'fruit_list': Fruit.objects.all()}
        return render(request, 'fruits/fruit_list.html', context)
    

    fruits/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>
    

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 2011-10-08
      • 2015-09-28
      • 1970-01-01
      • 2011-04-14
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多