有一个模型代表BBS。
我想在没有update database的情况下更改值。因为我想保留数据库值。准确地说,在显示时,我希望它显示为'[collabo]' + article.title
这就是我现在正在做的事情。
下面是'[collabo]'和所有带有for循环的标题
for article in articles:
article.title = '[collabo]'+article.title
有没有办法在一行代码中更改标题值?我不想更改或更新数据库。或者有更好的方法。
答案 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)
您可以使用模型类的方法来进行所需的特定修改。
class Article(models.Model):
# some fields ...
def edited_title(self):
return '[collabo] {}'.format(self.title)
然后您可以使用{{article.edited_title}}
在模板中利用它。