python – django queryset values()方法字段顺序与返回的不同
作者:互联网
我有一个字段列表可供选择,如下所示:
field_names = [u'name', u'mobile', u'address', u'email', u'sex']
渲染模板具有以下内容:
return render_to_string('templatetags/index.html', {
'objects':User.objects.all().values(*field_names)
})
但返回的结果字段顺序与输入字段顺序不同:
使用{{objects}}在模板中输出:
{u'mobile': u'18680868047', u'email': u'', u'sex': u'U', u'name': u'\u4f55\u667a\u5f3a', u'address': u'\u8944\u9633\u5357\u8def175\u53f7 \u73af\u4e2d\u5546\u53a6 410\u5ba4'}
这是我的模板:
<table>
{% for object in objects %}
<tr>
{% for key,value in object.items %}
<td class="{{key}}">{{ value }}</td>{% endfor %}
</tr>
{% endfor %}
</table>
解决方法:
queryset.values()返回一个dicts列表,而dicts不会以任何特定顺序返回它们的项目.
如果您想按顺序排列值,请使用queryset.values_list返回元组列表.
(您需要将列列表保存在单独的上下文变量中)
标签:python,django,django-queryset 来源: https://codeday.me/bug/20190902/1787888.html