Python中文
首页
教程
问答
标签
搜索
登录
注册
如何将request.POST转储到dict,维护多个值字段?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想将<code>ModelForm</code>数据存储在数据库中的<code>JSONField</code>中,以便以后能够从此数据创建对象,只需调用:</p> <pre><code>form = ModelForm(data_from_jsonfield_as_querydict) if form.is_valid(): object = form.save() </code></pre> <p><strong>问题1:</strong></p> <p>我在邮件里有数据:</p> <pre><code>>>> print request.POST {u'field-1': u'value1', u'field-2': [u'value-2a', u'value-2b']} </code></pre> <p>我必须把这个<code>QueryDict</code>转换成<code>dict</code>。但如果我调用<code>request.POST.dict()</code>,则会丢失字段-2中的列表值:</p> <pre><code>>>> print request.POST.dict() {'field-1': 'value1', 'field-2': 'value-2b'} </code></pre> <p>我试图使用<code>request.POST.getlist</code>,但随后我以列表的形式获取所有值:</p> <pre><code>>>> for k in request.POST.keys(): ... print request.POST.getlist(k) [u'value1'] [u'value-2a', u'value-2b'] </code></pre> <p>我甚至无法检查上述循环中的给定值是否为列表实例,因为如果值为列表,则<code>request.POST.get(k)</code>不会返回错误,另一方面,<code>request.POST[k]</code>为每个字段返回<code>MultiValueDictKeyError</code>。</p> <p>我想到的唯一解决方案是循环遍历通过<code>getlist()</code>获得的所有字段,并将一个值列表转换为字符串,但在我看来,这似乎有点过头了。</p> <p><strong>问题2:</strong></p> <p>假设问题1已经解决,并且我有<code>dict</code>表单数据存储在数据库中,如下所示:</p> <pre><code># object.data {u'field-1': u'value1', u'field-2': [u'value-2a', u'value-2b']} </code></pre> <p>当我想用上面的<code>dict</code>作为表单数据创建对象时,我必须将其转换为<code>QueryDict</code>,这可以简单地通过:</p> <pre><code>querydict = QueryDict('', mutable=True) querydict.update(object.data) </code></pre> <p>然后:</p> <pre><code>form = ModelForm(querydict) </code></pre> <p>问题是,当使用列表实例的某些值从<code>dict</code>创建<code>querydict</code>时,所有<code>querydict</code>值都包装在列表中:</p> <pre><code>print querydict {u'field-1': [u'value1'], u'field-2': [[u'value-2a', u'value-2b']]} </code></pre> <p>因此,<code>field-2</code>的表单验证失败,因为该字段的<code>getlist</code>返回列表列表(只有一个值)而不是值列表。</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你可以用<a href="https://docs.djangoproject.com/en/1.8/ref/request-response/#django.http.QueryDict.lists" rel="nofollow">^{<cd1>}</a>。格式与<code>dict</code>构造函数兼容。</p> <pre><code>post_data = dict(request.POST.lists()) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
5 回答
我想从用户导入值,为此
8 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
9 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
4 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
2 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
5 回答
我想从第一个空lin开始解析文本文件
10 回答
我想从简历、简历中提取特定部分
8 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
2 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
1 回答
我想从网上搜集一些关于抵押贷款的数据
2 回答
我想从网站上删除电子邮件地址
5 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
8 回答
我想从网站中提取数据,然后将其显示在我的网页上
2 回答
我想从网页上提取统计数据。
10 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
10 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
3 回答
我想从课堂上打印字典里的键
4 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
9 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
7 回答