在我的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