在django中,我构建了一个简单的方法,它被调用并被传递一个uniqueid、字段说明符和一个值。然后,它执行一个简单的加法来更新字段中的值。我已经对它进行了多种编码,并得出结论:在试图保存、更新或刷新数据库时getattr不起作用。 我的代码有一个变体:
def updatetable(uid, fieldtitle, value):
workingobj = bog_db.objects.get(name=uid)
objectcall = getattr(workingobj,fieldtitle)
objectcall = F(fieldtitle) + value
workingobj.refresh_from_db()
return
我试着用手干扰一些代码,看看能不能找出问题所在。 顺便说一句:值=37
^{2}$在我看来,Django不希望您使用getattr来执行db调用和更新,而是希望您显式地调用对象.字段. 在
这是真的吗?getattr是否复制属性?我想更好地理解它为什么会这样。在
谢谢
我不确定您在这里期望什么,但这与Django想要什么无关,也与
setattr
无关。在整数是不变的。但是,您获得fieldname的值并将其存储在
call
中,您不能修改它。执行call += value
将创建一个新值并将其存储在call
;该值现在与fieldname的原始值没有关系。在请注意,如果您最初这样做,
call = workingobj.fieldname
,您将得到完全相同的结果。在相关问题 更多 >
编程相关推荐