Django,Python,尝试更改从DB对象检索的对象中的字段值/属性.所有调用,不工作

Ric*_*ick 1 python django attributes object

我正在尝试从我从django db调用中检索的对象中的字段更改特定字段.

class Dbobject ()
   def __init__(self):
       dbobject = Modelname.objects.all()
   def test (self):
       self.dbobject[0].fieldname = 'some new value'
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样访问一个特定的属性:

objclass = Dbobject()
fieldvalue = dbobject.dbobject[0].fieldname
Run Code Online (Sandbox Code Playgroud)

但我希望能够使用Dbobject类的"test"方法来尝试更改对象属性值的特定值,但它不会更改它.我对此感到难过,因为我认为我应该更改对象的属性值.

Uno*_*oti 11

我不确定这是不是问题,但我认为你可能错过了save()方法.

from models import Person
p = Person.objects.get(pk=100)
p.name = 'Rico'
p.save()      # <== This writes it to the db. Is this what you're missing?
Run Code Online (Sandbox Code Playgroud)

以上是简单的案例.适合你上面写的,它就像:

dbobject.dbobject[0].fieldname = 'some new value'
dbobject.dbobject[0].save()
Run Code Online (Sandbox Code Playgroud)

或者,我写的更像是:

rec = dbobject.dbobject[0]
rec.fieldname = 'some new value'
rec.save()
Run Code Online (Sandbox Code Playgroud)

另请注意,根据您是否以及如何使用事务,您可能会或可能不会在提交之前看到对数据库的更改.