繁体   English   中英

Django,Python,尝试更改从数据库对象检索到的对象中的字段值/属性。所有调用均不起作用

[英]Django, Python, trying to change field values / attributes in object retrieved from DB objects.all call, not working

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

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类的“测试”方法来尝试更改对象的属性值上的特定值,但并没有更改它。 我为此感到困惑,因为这就是我认为应该更改对象的属性值的方式。

我不确定这是否是问题,但我认为您可能会缺少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()

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

我不确定您要达到的目标,但不应该这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM