這裏是我的代碼:有沒有辦法傳遞命名參數?
def update_tags_with_value(tags, many_to_many_class):
if tags:
many_to_many_class.objects.filter(
personne=self.instance,
date_v_fin=None
).update(date_v_fin=django_datetime.now())
for idx_tag_with_value in tags:
pl = many_to_many_class.objects.create(
personne=self.instance,
langue=TagWithValue.objects.get(
pk=idx_tag_with_value
)
)
pl.save()
update_tags_with_value(self.cleaned_data.get('known_languages'),
PersonneLangue)
update_tags_with_value(self.cleaned_data.get('types_permis'),
PersonneTypesPermis)
所以我發現我可以很容易地通過一個類作爲參數。但最後一個問題是關於命名的論點。如果你看我的代碼,我會做一個langue=TagWithValue..[blabla]
。問題是,這是一個「命名」參數,我希望能夠通過它這樣:
update_tags_with_value(self.cleaned_data.get('known_languages'),
PersonneLangue, 'langue')
update_tags_with_value(self.cleaned_data.get('types_permis'),
PersonneTypesPermis, 'permis')
然後以某種方式調用它像(它不工作尚未) :
def update_tags_with_value(tags, many_to_many_class, champ):
if tags:
many_to_many_class.objects.filter(
personne=self.instance,
date_v_fin=None
).update(date_v_fin=django_datetime.now())
for idx_tag_with_value in tags:
pl = many_to_many_class.objects.create(
personne=self.instance,
champ=TagWithValue.objects.get(
pk=idx_tag_with_value
)
)
pl.save()
現在我得到這個錯誤:
'champ' is an invalid keyword argument for this function
更確切地說,我需要調用many_to_many_class.objects.create()
一個時間known_languages=blabla
和ANOT她的時間types_permis=blabla
其中,換句話說,應該叫一次many_to_many_class.objects.create(known_languages=blabla)
和many_to_many_class.objects.create(types_permis=blabla)
,我想知道是否有一種方法來精確只有參數的名稱,不blabla
如何解決這個問題?
我不100%瞭解你想要什麼,但[命名參數解包](http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters)可能對你有用。你可以創建一個字典並將它傳遞給一個函數,就好像它是一個關鍵字參數的集合。 – Kevin