django:对 **kwargs 使用 namedtuple 而不是 dict?

Lar*_*gas 4 python django iterable-unpacking

为什么这会成功

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

但不是这个?

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

难道就没有办法使用namedtuples的时候才来开箱参数,而不是类型的字典的django

Pet*_*per 6

我不认为 Python 关键字参数解包(**语法)支持命名元组,但是您可以使用_asdict()命名元组对象的方法从命名元组中获取字典。或者vars()在 3.x 上,也可能在 2.7.5 上(从 namedtuple 获取特定对象的对象名称对 2.7.5 安装的状态进行了一些讨论)。