【发布时间】:2020-01-02 11:05:21
【问题描述】:
当我使用 Table.objects.raw(raw query) 时,我可以看到数据。当我使用 connection.cursor()、cursor.execute(相同的原始查询)时,数据不会显示在 HTML 页面中。是什么原因?
甲骨文 11g CX-Oracle 7.2.2 Django 1.11.22
#ORM raw query - It's OK.
class UserList(ListView):
query = 'select user_id, user_name from user'
queryset = USER.objects.raw(query)
context_object_name = 'user_list'
template_name = 'user_list.html'
# Problem - data is not showed in screen.
class UserList(ListView):
with connection.cursor() as cursor:
cursor.execute('select user_id, user_name from user')
queryset = cursor.fetchall()
context_object_name = 'user_list'
template_name = 'user_list.html'
#user_list.html
<h2>User List(ListView Sample)</h2>
<table border="1" align="center">
<tr>
<th scope="col">User ID</th>
<th scope="col">User Name</th>
</tr>
{% for user in user_list %}
<tr>
<th width="200"><a href="http://127.0.0.1:8000/sec/userlist/{{ user.id }}/">{{ user.user_id }}</a></th>
<th width="200">{{ user.user_name }}</th>
</tr>
{% endfor %}
</table>
没有错误消息。但是数据没有显示在 HTML 页面中
【问题讨论】:
-
使用
.fetchall(..)你确实不将结果解释为User对象(在这种情况下)。但是首先使用原始查询实际上并不是一个好主意(使用硬编码的 URL 等也是如此)
标签: django