2016-09-27 7 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に渡すよりも、あなたはそこのdict 使用する必要があります。

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

を今、あなたは、単に通常の方法で関数を呼び出す:

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

(あなたはまた、tablenameの名前を変更する検討すべきですパラメータ:文字列を意味するテーブル名を渡すのではなく、モデルクラスオブジェクトです。

+0

ありがとうございます。それは私をナットにしていた。クイックアンサーを気に入ってください。 –

関連する問題