代码之家  ›  专栏  ›  技术社区  ›  Rick

Django,Python,尝试更改从DB检索的对象中的字段值/属性对象。全部打电话,不行

  •  1
  • Rick  · 技术社区  · 16 年前

    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
    

    2 回复  |  直到 14 年前
        1
  •  15
  •   Unoti    16 年前

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

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

        2
  •  0
  •   Bernhard Vallant    16 年前

    我不完全确定你想达到什么目的,但它不应该是这样的:

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