django:使用namedtuple代替dict for ** kwargs?

时间:2015-03-05 19:00:05

标签: python django iterable-unpacking

为什么会成功

qs = Model.objects.filter(pk=1)
kwargs = {'name': 'me',
           'age_desc': 'getting older'
}
qs.update(**kwargs)

但不是吗?

qs = Model.objects.filter(pk=1)
nt =  collections.namedtuple('nt','name, age_desc')
kwargs = nt('me', 'getting older') 
qs.update(**kwargs)

namedtuples解压缩参数时,是否无法使用django代替dicts?

1 个答案:

答案 0 :(得分:4)

我不认为Python关键字参数解包(**语法)支持命名元组,但您可以使用命名元组对象的_asdict()方法从命名元组中获取字典。或者vars()在3.x上,可能在2.7.5上(Get the object name of a specific object from namedtuple对2.7.5安装的状态有一些讨论)。