2017-03-06 3 views
1

Djangoのオブジェクトに情報を追加するのではなく、更新する必要があります。Djangoのオブジェクトに追加する

Database: 
----------------------- 
ColA | ColB 
----------------------- 
1  | "Test string." 

と更新コード:

o = Model.objects.select_related().filter(ColA=1).update(
    ColB = "Entry 2") 

これはEntry 2からColBを設定します私はこのデータベースを持っています。私は更新するのではなく、追加できるようにしたい。 ColB"Test string. Entry 2."に設定されるように、テキストを追加する方法はありますか?

答えて

4

あなたはできますが、少しばかりです。

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

Model.objects.select_related().filter(ColA=1).update(ColB=Concat('ColB', Value('Entry 2'))) 

それはちょうど、アイテムを取得し、それを変更し、それを保存する方が簡単でしょう:

o = Model.objects.get(ColA=1) 
o.ColB += "Entry 2" 
o.save() 
+0

私は第2の方法を使用しました。これはきれいに見え、読みやすくなっています。完璧に働いた! – GreenSaber

0
objects = Model.objects.select_related().filter(ColA=1) 
for o in objects: 
    o.colB = o.colB + ' Entry 2.' 
    o.save() 
+1

は同様にあなたのコードを説明してみてください! – Jensd

関連する問題