如何在视图中订购一组对象
Posted
技术标签:
【中文标题】如何在视图中订购一组对象【英文标题】:How to order a set of object in a view 【发布时间】:2013-09-29 19:08:31 【问题描述】:我的代码目前列出了server
中的所有domains
使用:
% for domain in server.domain_set.all %
我想通过它们的 url 对视图中的域进行排序。比如:
% for domain in server.domain_set.all().order_by('url') %
但我得到了一个例外"could not parse the remainder"
。如何订购列表?
【问题讨论】:
【参考方案1】:“无法解析余数”错误是因为您在 django 模板中包含 Python 代码。 Django 不允许这样做。
您可以在模型上添加一个方法:
def sorted_domains(self):
return self.domain_set.all().order_by('url')
然后这样称呼它:
% for domain in server.sorted_domains %
另一种方法是使用Meta attribute 在Domain
模型上设置默认排序顺序。
【讨论】:
好建议,+1。 @BurhanKhalid 同意,我真的很喜欢这个,而不是在模板中这样做。干净多了。【参考方案2】:您可以使用dictsort 过滤器:
获取字典列表并返回按键排序的列表 在参数中给出。
% for domain in server.domain_set.all|dictsort:'url' %
另见:
Sorting related items in a Django template order_by template filter【讨论】:
以上是关于如何在视图中订购一组对象的主要内容,如果未能解决你的问题,请参考以下文章