在我的Django应用程序中,我有一个POST请求QueryDict,其值正在尝试更改。我知道QueryDict对象是不可变的,所以我实例化了一个可变的QueryDict项目。问题的关键在于,该值是由应用程序前端中的AJAX调用进入的逗号分隔数字的字节串,例如, U “2,4,6,7”。在Django中转换request.POST的困难
QueryDict中的每个关键值本质上都是一个值列表[U'2',U'4'],所以我需要更改从我的前端发布的单个字节U“2,4,6,7”结束为字节串[U'2',U'4',U'6','7']的列表。然而,问题是每当我尝试对字符串进行拆分并将请求POST键值分配给该新的拆分字符串时,键值就是列表中的列表。例如{'专长':[[U'2',U'4']]}。我尝试了人为的解决方案通过价值观的分裂列表迭代,并将这些信息附加到信息发布项目的核心价值,但它给我的错误
AttributeError: 'unicode' object has no attribute 'append'
在一个可变的QueryDict对象,如果每个的QueryDict item是一个列表,它没有附加值,比编辑列表项目的方式要多。有没有更简单的方法来完成这一点?
查看功能代码
mentors = Mentor.objects.filter(is_active=True, is_verified=True).order_by('last_name', 'first_name')
ajax_post = dict(request.POST.iteritems())
post = QueryDict('', mutable=True)
post.update(ajax_post)
for key in post:
postlist = post[key].split(',')
for item in postlist:
post[key].append(item)
# First attempt that gives list in a list
# for item in post:
# post[key] = post[key].split(',')
form = MentorSearchForm(data=post)
if form.is_valid():
mentors = filter_mentors(form.cleaned_data)
你应该解释为什么你想修改querydict,而不是写表单验证,以便它接受发布的内容。 –
(并且Python列表无论如何都没有称为'push'的方法;也许你的意思是'append'?) –
是的,我的意思是追加。对不起,我一直在从python到javascript,有时会互换这些条款。 – JBT