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

4 投票
2 回答
27389 浏览
提问于 2025-04-16 04:06

我正在尝试从一个从Django数据库获取的对象中更改某个特定字段。

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

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

objclass = Dbobject()
fieldvalue = dbobject.dbobject[0].fieldname

但是我想使用Dbobject类的“test”方法来尝试更改对象的某个属性值,但它并没有改变。我对此感到困惑,因为我原本以为这就是更改对象属性值的方法。

2 个回答

0

我不太确定你想要达到什么效果,但是不是应该像这样:

class Dbobject ():
   def __init__(self):
       self.dbobject = Modelname.objects.all()
   def test (self):
       self.dbobject[0].fieldname = 'some new value'
17

我不确定这是不是问题所在,但我觉得你可能缺少一个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?

上面是一个简单的例子。根据你上面写的内容,应该像这样:

dbobject.dbobject[0].fieldname = 'some new value'
dbobject.dbobject[0].save()

或者,我会更像这样写:

rec = dbobject.dbobject[0]
rec.fieldname = 'some new value'
rec.save()

另外要注意的是,根据你是否使用事务,以及使用的方式,你可能在提交之前看不到数据库的变化。

撰写回答