2017-03-06 52 views
1

我需要將信息附加到Django中的對象而不是更新它。我有這個數據庫:附加到Django中的對象

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

這更新的代碼:

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

這將設置ColBEntry 2。我希望能夠追加而不是更新。有沒有辦法讓我追加文字,以便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

我使用了第二種方法,因爲它看起來更乾淨並且更易於閱讀。完美工作! – GreenSaber

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

試圖解釋你的代碼,以及! – Jensd