我该如何简化这个python语句

时间:2016-05-18 02:35:15

标签: python django

有一个模型代表BBS。

我想在没有update database的情况下更改值。因为我想保留数据库值。准确地说,在显示时,我希望它显示为'[collabo]' + article.title这就是我现在正在做的事情。

下面是'[collabo]'和所有带有for循环的标题

for article in articles:
    article.title = '[collabo]'+article.title

有没有办法在一行代码中更改标题值?我不想更改或更新数据库。或者有更好的方法。

2 个答案:

答案 0 :(得分:1)

如果你想在一个数据库查询中执行此操作,它的行数比现在的长一行!但它效率更高。

from django.db.models import Value 
from django.db.models.functions import Concat

Article.objects.annotate(new_title = Concat(V('[collabo]'),'title')))

查询集中的annotate方法是你的朋友(在Concat和Value的帮助下)

您也可以在模板级别执行此操作

articles = Article.objects.all()    渲染(' template.html',{'文章':文章})

然后

{% for article in articles %}
    [collabo] {{ article.title }}

{% endfor %}

答案 1 :(得分:0)

您可以使用模型类的方法来进行所需的特定修改。

models.py

class Article(models.Model):
    # some fields ...

    def edited_title(self):
       return '[collabo] {}'.format(self.title)

然后您可以使用{{article.edited_title}}在模板中利用它。