【问题标题】:Keyword Not Passing in Function关键字未传入函数
【发布时间】:2016-09-27 14:53:54
【问题描述】:

我正在使用 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,但似乎仍然无法让它获取字段值。

【问题讨论】:

    标签: python django django-models keyword


    【解决方案1】:

    问题不在于你如何调用这个函数:函数本身并没有做你想做的事情。

    您需要更改呼叫get 的方式。而不是直接传入 refname,您需要使用字典 there:

    workingobj = tablename.objects.get(**{refname: uid})
    

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

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

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

    【讨论】:

    • 谢谢伙计。那让我发疯了。感谢您的快速回答。
    猜你喜欢
    • 2019-02-04
    • 2011-01-12
    • 2010-09-24
    • 2011-10-26
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多