django - Django 模板:按 __str__ 的值排序
问题描述
我正在使用 django 3,并且为我的模型附加了str函数:
class SubSubCategory(models.Model):
subCategory = models.ForeignKey(SubCategory, on_delete=models.CASCADE)
name = models.CharField("Nom du sous sous category" , max_length=200, )
description = models.CharField("Description du sous sous category" , max_length=200, null=True, blank=True)
def __str__(self):
description_locale = self.name + " : " + self.description if self.description else self.name
hierarchie = [str(x) for x in [self.subCategory.category, self.subCategory, description_locale]]
description_totale = " > ".join(hierarchie)
return description_totale
我怎么能要求我的模板根据这个str表示来排序我的列表?
我想做类似的事情:
{% for SubSubcategory in object_list|dictsort:'str' %}
但它显然不起作用,因为“str”什么都不是。如何在模板中调用对象的字符串表示形式?将其作为订购单传递?
解决方案
一个简单的解决方案可能是将其也作为属性呈现:
class SubSubCategory(models.Model):
# …
@property
def catstr(self):
return str(self)
def __str__(self):
# …
然后你可以对该属性进行排序:
{% for SubSubcategory in object_list|dictsort:'catstr' %}
…
{% endfor %}
话虽如此,我不确定在模板中排序是个好主意。模板应该只关注呈现逻辑,而不是模板逻辑。
推荐阅读
- php - php更改时间格式
- java - GUI Swing java应用程序中的文件.form
- jquery - 过滤同位素网格后重新应用 jquery-match-height
- sql - 多个 CASE WHEN 语句仅输出单行
- python - 用于查找和替换字符串的“或”语句 pandas python 不起作用
- php - PHP变量的mySQL问题
- julia - Julia 1.0.0:尝试添加 PyPlot 包时出错
- sql-server - 错误 - 过程没有参数,并且在动态查询中提供了参数
- regex - 根据搜索词上方和下方的行内容进行搜索
- javascript - 使用 ES6 模块为从 CDN 加载的 JS 导入 TS 类型