在Django模板中使用多个模型字段重新组合列表
我在Django模板中使用RegroupTag来列出许多项目,按客户分组。我的模型是:在Django模板中使用多个模型字段重新组合列表,django,templates,Django,Templates,我在Django模板中使用RegroupTag来列出许多项目,按客户分组。我的模型是: class Customer(models.Model): name = models.CharField(max_length=25) city = models.CharField(max_length=25) 我可以列出customer.name(或customer.city)项目,我真正想要的是将它们按“name,city”顺序排列。根据文档“任何有效的模板查找都是RegroupTag的合法
class Customer(models.Model):
name = models.CharField(max_length=25)
city = models.CharField(max_length=25)
我可以列出customer.name(或customer.city)项目,我真正想要的是将它们按“name,city”顺序排列。根据文档“任何有效的模板查找都是RegroupTag的合法分组属性,包括方法、属性、字典键和列表项。”[1]如何为此定义方法?我如何从模板中调用它
[1]
更新:我了解重组功能,现在正在使用它,我使用对象的一个字段对列表进行分组。分隔符customer.grouper显示该特定字段的名称。在我的例子中是“customer.name”或“customer.city”。我的目标是一起展示,比如“customer.name,customer.city”(即“Microsoft,Redmond”)。文档中简要提到了这一点,但我无法理解
def display_name(self):
return "%s, %s" (self.name, self.city)
作为我的客户模型的一部分,我尝试了上述方法来解决我的问题。但是我不确定如何从我的模板中调用它。您的模型函数是正确的,但它应该在大括号前包含一个
%
:
def display_name(self):
return "%s, %s" %(self.name, self.city)
视图应该传递对象列表,而不是值列表
让列表为tp
,因此您的模板代码应该如下所示:
{% regroup tp by display_name as tp_list %}
<ul>
{% for t in tp_list %}
<li>{{ t.grouper }}
<ul>
{% for item in t.list %}
<...something of your code....>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{%tp通过显示\u名称为tp\u列表%}
{t在tp_列表%中的百分比}
- {{t.gropper}}
{t.list%中项目的%s}
{%endfor%}
{%endfor%}
这对你来说应该已经足够好了。请你在这里详细说明一下你到底想要什么。