Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 修改查询集结果_Django_Slice_Django Queryset - Fatal编程技术网

Django 修改查询集结果

Django 修改查询集结果,django,slice,django-queryset,Django,Slice,Django Queryset,是否可以更改QuerySet对象中的某些特定项?在我的例子中,我尝试将长度超过40个字符的“title”字段切分,并在字段末尾附加“…”。有两种方法可以实现您想要的功能 第一种是使用Django过滤器。因此,如果要循环查询集的项目并将它们显示在页面上,请使用以下命令。您可以在模板中这样使用: {% for item in queryset %} <h1>{{ item.title|truncatewords:3 }}</h1> {% endfor %} 然后,您

是否可以更改QuerySet对象中的某些特定项?在我的例子中,我尝试将长度超过40个字符的“title”字段切分,并在字段末尾附加“…”。

有两种方法可以实现您想要的功能

第一种是使用Django过滤器。因此,如果要循环查询集的项目并将它们显示在页面上,请使用以下命令。您可以在模板中这样使用:

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

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

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

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

您是要将这些更改保存到数据库中,还是只在页面上显示它们?这会起作用,但可能意味着在queryset中出现不必要的循环。最好是像我建议的那样,将逻辑放在模型上的一个方法中,这样可以保存一个不必要的循环,以防在其他地方需要逻辑。hi@sheats,我们可以在queryset中添加一个新的列字段吗?我想尝试在查询集中添加新值,并使用for循环返回模板中的值。
for item in your_query_set:
    if(len(item.title) > 40):
        item.adjusted_title = item.title[0:40] + "..."