我是python的新手,从python3和django1.8开始。我们可以将dictionary作为一个参数传递给它,其中包含多个值,但函数定义中的参数要小一些。在
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")
以下是我的请求对象:
^{pr2}$这是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'
我不认为这和模特有什么关系。在
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()
您的}。但是,调用函数时的dict扩展确实包含
prepare_profile_dict
不接受revenue
参数(如错误消息中所述);只接受first_name
、last_name
和{revenue
关键字。将其从reqobj
中删除:或者在
^{pr2}$prepare_profile_dict
结尾添加一个**kwargs
参数,以捕捉任何额外的关键字参数(在函数内部将被忽略)。在(显然,
csrfmiddlewaretoken
也是如此。)此外,还可以使用querysets^{
使用
ModelForm
的正常解决方案:相关问题 更多 >
编程相关推荐