0

我一直在寻找一种制作 django 模板的方法,该模板可以在表格中每行显示超过 2 个值,

假设我有一个具有 5 个属性的类,我希望这些属性值显示在我的 HTML 页面上的表格中。起初我尝试使用字典,但 5 个属性中只有 2 个是不够的。

可以说我的对象是这样的:

class ModelA(models.Model):
    ID = models.IntegerField(primary_key=True, db_column='ID') 
    name = models.CharField(max_length=60, db_column='name')
    yesorno = models.CharField(max_length=9, db_column='yes/no') 
    text = models.TextField(db_column='text') 
    description = models.TextField(db_column='description') 

现在在一个视图中,我调用所有这些模型属性,我应该在什么数据结构中保存所有内容,以及如何将所有这 5 个属性放在表中每个对象的一行中。(有时可能需要在表格中显示数百个对象(因此,100 行))

4

1 回答 1

2

抓取所有对象(相应地过滤)。

正如@init3 指出的那样,ID 不是必需的,因为 Django 会自动添加它,并且yesorno应该是 Bool。

# view.py

model_as = []
for id in ids:
    try:
        model_a = ModelA.objects.get(ID=id)
    except ModelD.DoesNotExist:
        # No model found
        pass
    else:
        model_as.append(model_a)

return render_to_response('template.html',
    {'model_as': model_as},
    context_instance=RequestContext(request))

循环遍历模板中的对象并在您想要的任何列中打印每个变量。

# template.html
<table>
{% for model_a in model_as %}
    <tr>
        <td>
            {{ model_a.ID }}
            {{ model_a.name }}
            {{ model_a.yesorno }}
            {{ model_a.text }}
            {{ model_a.description }}
        </td>
    <tr>
{% empty %}
    <tr>
        <td>No ModelAs to see here</td>
    <tr>
{% endfor %}
</table>
于 2012-09-27T08:18:57.373 回答