Django, Python, пытается изменить значения / атрибуты поля в объекте, полученном из DB. Вызов all.all, не работает - PullRequest
1 голос
/ 14 сентября 2010

Я пытаюсь изменить определенное поле из поля в объекте, который я извлек из вызова 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

но я хочу иметь возможность использовать метод "test" класса Dbobject, чтобы попытаться изменить конкретное значение в значении атрибута объекта, но оно не меняет его. Я озадачен этим, так как я думал, что должен изменить значение атрибута объекта.

Ответы [ 2 ]

9 голосов
/ 14 сентября 2010

Я не уверен, является ли это проблемой или нет, но я думаю, что вы можете пропустить метод 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()

Также обратите внимание, что в зависимости от того, как и как выпри использовании транзакций вы можете или не можете видеть изменения в базе данных, пока не совершите фиксацию.

0 голосов
/ 14 сентября 2010

Я не совсем уверен, чего вы пытаетесь достичь, но разве это не должно быть что-то вроде:

class Dbobject ():
   def __init__(self):
       self.dbobject = Modelname.objects.all()
   def test (self):
       self.dbobject[0].fieldname = 'some new value'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...