gpt4 book ai didi

python - 如何将查询集渲染到表中 template-django

转载 作者:太空狗 更新时间:2023-10-29 22:04:20 26 4
gpt4 key购买 nike

我有一个模型,其定义如图所示,它根据查询进行操作并获取必须放置在表格适当单元格中的对象列表。这是代码的相关部分。

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) 没有对象,则该特定插槽应该在表中显示为空。这是我为满足这些目的而编写的 View 。

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.我的 View 代码一点也不优雅(这很糟糕,因为我知道 django 提供了很多东西来处理这些任务)因为我定义变量专门循环而不是从 (x,y ) 数据库对象的值。

2.我在[<Location: 21>]中得到输出格式,但我希望它为“21”。

3.如何在给定 (x,y) 不存在任何对象的情况下引入空单元格。

4.请提出任何其他可能使我的代码更简单和通用的方法。

最佳答案

如果你想让你的代码更简单,我想推荐使用application django-tables2 .这种方式可以解决你所有关于生成表的问题。

正如文档所说:

django-tables2 simplifies the task of turning sets of data into HTMLtables. It has native support for pagination and sorting. It does forHTML tables what django.forms does for HTML forms. e.g.

Its features include:

  • Any iterable can be a data-source, but special support for Django querysets is included.
  • The builtin UI does not rely on JavaScript.
  • Support for automatic table generation based on a Django model.
  • Supports custom column functionality via subclassing.
  • Pagination.
  • Column based table sorting.
  • Template tag to enable trivial rendering to HTML.
  • Generic view mixin for use in Django 1.3.

Creating a table is as simple as:

import django_tables2 as tables

class SimpleTable(tables.Table):
class Meta:
model = Simple

This would then be used in a view:

def simple_list(request):
queryset = Simple.objects.all()
table = SimpleTable(queryset)
return render_to_response("simple_list.html", {"table": table},
context_instance=RequestContext(request))

And finally in the template:

{% load django_tables2 %} 
{% render_table table %}

This example showsone of the simplest cases, but django-tables2 can do a lot more! Checkout the documentation for more details.

也可以使用字典代替查询集。

关于python - 如何将查询集渲染到表中 template-django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com