Django数据库对象未显示在模板上

时间:2019-11-06 23:18:29

标签: django

我正在使用django_tables和for循环迭代渲染django对象,但两种方法均无效

我正在尝试通过模型形式呈现保存在数据库中的对象。我的第一种方法是使用django_tables2返回非类型对象。

当前,我已使用for循环遍历对象,但未显示对象值。令我着迷的是,所有行都没有数据返回。请帮忙。

models.py

class Issuekeys(models.Model):
    keynumber=models.CharField(max_length=10);
    workorder=models.CharField(max_length=50);
    contrator=models.CharField(max_length=50);
    contrator_contact=models.IntegerField();
    assigned_name=models.CharField(max_length=50);
    assigned_ID=models.IntegerField();
    assigned_contact=models.IntegerField();
    date_to_return=models.DateField();

    class Meta:
        managed=False
        db_table='ieng_mis_issuekeys'

views.py

def issuetable(request):
     query_set=zip(Issuekeys.objects.all())
     context={'query_set': query_set}
     return render(request, 'keymanager.html',context)

urls.py

url(r'^keymanager$', views.issuetable,name='keymanager'),

keymanager.html

<div class="bg-light" style="margin-top: 1em; margin-left: 1mm">
    <table class="table table-hover">
        <tbody>
        <tr>
            <th scope="col">Key Number</th>
            <th scope="col">Work Order</th>
            <th scope="col">Contractor</th>
            <th scope="col">Assignee Name</th>
            <th scope="col">Assignee Contact</th>
            <th scope="col">Date issued</th>
        </tr>
        {% for key in query_set %}
        <tr>
            <td>{{key.keynumber}}</td>
            <td>{{key.workorder}}</td>
            <td>{{key.contractor}}</td>
            <td>{{key.assigned_name}}</td>
            <td>{{key.assigned_contract}}</td>
            <td>{{key.date_to_return}}</td>
        </tr>
        {% endfor %}
        </tbody>
    </table>
</div>

输出

1 个答案:

答案 0 :(得分:-1)

In views.py, you just have to remove zip function, only need to query like this - IssueKeys.objects.all().

zip function returns the list of tuple like this [(<Issuekeys:somevalue>),(<Issuekeys:somevalue>)], where the tuple contains the model object, But In template, you should return the list of model object like this :- [<Issuekeys:somevalue>, <Issuekeys:somevalue>]

So when you iterate over the list in template, you will get the model object in the list directly and you can access the model class attributes.

    def issuetable(request):
         query_set=Issuekeys.objects.all()
         context={'query_set': query_set}
         return render(request, 'keymanager.html',context)