我正在使用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>
输出
答案 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)