2017-03-06 70 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