python字典作为参数,在字典中具有多个值

Laxmikant

我是python的新手,从python 3和django1.8开始。我们可以将字典作为参数传递给它吗,但其中要包含多个值,但函数定义中的参数要少一些。

def save_myobj(request):
    '''
    '''
    reqobj = dict(zip(request.POST.keys(), request.POST.values()))
    my_dict = prepare_profile_dict(**reqobj)
    obj =  Model.objects.get(pk=1)
    obj.__dict__.update(my_dict)
    obj.save()
    return HttpResponse("true")

这是我的请求对象:

reqobj  = {
            u'csrfmiddlewaretoken': u'xzlrzJkpKb0aAIvdJ7Z7aX05uhHjnwjX',
            u'email': u'',
            u'first_name': u'abc',
            u'last_name': u'def',
            u'revenue': u''
          }

这是 prepare_profile_dict

def prepare_profile_dict(first_name, last_name, email):
    ''' '''
    return { 
            "revenue" : get_revenue(),
            "first_name":first_name, 
            "last_name":last_name, 
            "email":email
           };

但是出错了

TypeError at /profile/save/
prepare_profile_dict() got an unexpected keyword argument 'revenue'

我认为与Model没有任何关系。

class Model(models.Model):
    '''
    '''
    first_name = models.TextField("first_name", blank=True, null=True, db_index=True)
    last_name  = models.TextField("last_name", blank=True, null=True, db_index=True)
    email  =  models.TextField("email", blank=True, null=True, db_index=True)
    revenue  = models.IntegerField()
用户名

prepare_profile_dict不接受revenue参数(如错误消息中所述);只是first_namelast_nameemail但是,调用该函数时,您的dict扩展确实包含revenue关键字。可以将其从中删除reqobj

del reqobj['revenue']

**kwargs在末尾添加一个参数prepare_profile_dict以捕获任何其他关键字参数(在函数内部将被忽略)。

def prepare_profile_dict(first_name, last_name, email, **kwargs):
    ...

(显然,也是如此csrfmiddlewaretoken。)


另外,您可以使用querysets update 方法:

def save_myobj(request):
    reqobj = dict(zip(request.POST.keys(), request.POST.values()))
    my_dict = prepare_profile_dict(**reqobj)
    # ensure my_dict only contains relevant keys
    Model.objects.get(pk=1).update(**my_dict)
    # No .save method needed
    return HttpResponse("true")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将字典中具有多个值的字典字典键映射到python中的json

在python字典中查找并打印具有多个值的键

如何在python字典中的键具有多个值?

字典中具有多个值的键(Python)

在字典中为一个键添加具有多个值的列表或字典-Python

如何在python中比较两个字典(作为具有多个列表条目的列表)中的值

如何从多个具有相同值的字典中获取所有值到列表python中

具有多个值的键-检查值是否在字典python中

如何在Python中为具有不同类型的字典添加类型声明作为值

Python字典具有多个值的单键可能吗?

在 Ansible 中迭代具有多个值的字典

列表中具有单键多个值的字典

将字典列扩展为具有字典键和字典值的行作为熊猫中的新列值

将具有列表作为值的Python字典转换为简单字典

如何在Python中编写具有多个键的字典,每个键具有多个值到csv?

如何在python中重新保存具有多个值的字典键?

Python参数作为字典

具有多个值到元组的字典

删除具有多个值的字典键值

Python:具有多个值的键的字典。如何将字典打印为分隔值列表的字典集

从字典列表中创建每个键具有多个值的字典

如何将具有多个文本列表值的python字典拆分为具有相同值的键的单独字典?

具有多个键的Python字典列表

如何在Python中添加具有字典值的列

如何在python中创建具有某些值的字典

在字典中查找具有相同值的嵌套列表 [Python]

如何合并 Python 中具有相似值的字典?

每个键具有多个值的字典列表作为数据框

获取字典列表中具有键/值的字典