【发布时间】:2012-03-01 15:48:30
【问题描述】:
我有一个模型,它的定义如图所示,它对查询进行操作并获取必须放置在表格的适当单元格中的对象列表。这是代码的相关部分。
class Location(models.Model):
x=models.IntegerField(null=True)
y=models.IntegerField(null=True)
z=models.CharField(max_length=5,null=True)
def __unicode__(self):
return self.z
我想从这个数据库中检索所有对象并将它们放在一个二维表中,其中行和列由该对象的 x,y 定义。如果没有特定 (x,y) 的对象,那么该特定插槽应该在表格中显示为空。这是我为达到这些目的而编写的视图。
def gettable(request):
events=[]
for xdim in xrange(3):
xe=[]
for ydim in xrange(3):
object=[0]
object.append(Location.objects.filter(x=xdim,y=ydim))
xe.append(object[-1])
events.append(xe)
return render(request, 'scheduler/table.html', {'events':events})
这里是html部分的代码
<table border="1">
<th>Header 0</th>
<th>Header 1</th>
<th>Header 2</th>
{% for event in events %}
<tr>
{% for x in event %} <td>{{ x }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
我必须在这里解决多个问题。
1.我的视图代码一点也不优雅(这很糟糕,因为我知道 django 提供了很多东西来处理这些任务)因为我专门定义变量来循环而不是从 (x,y ) 数据库对象的值。
2.我得到[<Location: 21>] 格式的输出,但我希望它为“21”。
3.如何在给定 (x,y) 不存在任何对象的情况下引入空单元格。
4.请提出任何其他可能使我的代码更简单和通用的方法。
【问题讨论】:
标签: python django templates django-queryset