2016-09-27 66 views
0

我正在使用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,但仍似乎無法讓它採取字段值。

回答

0

問題不在於你如何調用這個函數:函數本身不會做你想要的。

您需要更改如何撥打get。而不是refname直接傳遞,你需要使用字典

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

現在你只需調用該函數以正常方式:

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

(你也應該考慮重新命名tablename參數:你沒有傳遞一個表名,這意味着一個字符串,但是一個模型類對象。)

+0

謝謝你。這讓我瘋狂。感謝快速回答。 –