修改QuerySet结果

时间:2009-11-19 15:03:44

标签: django slice django-queryset

是否可以更改QuerySet对象中的某些特定项?在我的情况下,我正在尝试切割长度超过40个字符的“标题”字段,并在字段末尾附加“...”。

2 个答案:

答案 0 :(得分:3)

有两种方法可以做你想做的事。

第一种是使用Django过滤器。因此,如果您循环查询集的项目并在页面上显示它们,请使用truncatewords之类的内容。你可以在你的模板中使用这个:

{% for item in queryset %}
    <h1>{{ item.title|truncatewords:3 }}</h1>
{% endfor %}

看起来似乎没有用于截断字符数的Django过滤器。如果你想write your own filter,那就不难了。

另一种选择是在模型上放置一个方法来做你想要的。这是一个例子:

@property
def short_title(self):
    return '%s...' % self.title[:40]

然后,您就可以在模板中的任何位置引用{{object.short_title}}。

答案 1 :(得分:1)

我建议为每个对象添加一个新属性'adjusted_title'

for item in your_query_set:
    if(len(item.title) > 40):
        item.adjusted_title = item.title[0:40] + "..."