Django getattr和更新问题

2024-09-26 22:07:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在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是否复制属性?我想更好地理解它为什么会这样。在

谢谢


Tags: django方法代码数据库编码dbuidvalue
1条回答
网友
1楼 · 发布于 2024-09-26 22:07:48

我不确定您在这里期望什么,但这与Django想要什么无关,也与setattr无关。在

整数是不变的。但是,您获得fieldname的值并将其存储在call中,您不能修改它。执行call += value将创建一个新值并将其存储在call;该值现在与fieldname的原始值没有关系。在

请注意,如果您最初这样做,call = workingobj.fieldname,您将得到完全相同的结果。在

相关问题 更多 >

    热门问题