2015-03-08 65 views
0

我需要顯示從數據庫到用戶的幾行。例如我有表Fruits列:name,colorprice。所以,我希望我的形式產生這樣緊湊的網格視圖的HTML:在django模板中顯示多行爲網格

<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問題描述:

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標籤?

回答

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>