关键字未在函数中传递

时间:2016-09-27 14:53:55

标签: python django django-models keyword

我正在使用django模型。我想将模型字段作为变量传递。鉴于我的职能:

from django.models import models

def updatetable(value, fieldtitle, tablename, uid, refname):  
    workingobj = tablename.objects.get(refname=uid)
    currentvalue = getattr(workingobj, fieldtitle)
    setattr(workingobj, fieldtitle, currentvalue + value)
    workingobj.save()
    return

我试过了:

updatetable(len(sr), 'posts_added', managementmetrics, startdtg, refname=update_dtg_start)

updatetable(len(sr), 'posts_added', managementmetrics, startdtg, refname='update_dtg_start')

甚至

updatetable(len(sr), 'posts_added', managementmetrics, startdtg, {refname:update_dtg_start})

我收到错误:无法解析关键字' refname'进入田野。选项包括:length_of_update,update_dtg_finish,update_dtg_start

我已经尝试为** kwargs切换refname,但似乎仍然无法获取字段值。

1 个答案:

答案 0 :(得分:0)

问题不在于你如何调用这个函数:函数本身不能达到你想要的效果。

您需要更改致电get的方式。您需要使用dict

,而不是直接传入refname
workingobj = tablename.objects.get(**{refname: uid})

现在您只需以正常方式调用该函数:

updatetable(len(sr), 'posts_added', managementmetrics, startdtg, 'update_dtg_start')

(您还应该考虑重命名tablename参数:您没有传递表名,这意味着字符串,而是模型类对象。)