简体   繁体   English

Django制作查询原始SQL

[英]Django Making query Raw SQL

model 模型

class Member(models.Model):
   id_unit = models.ForeignKey(Unit)
   id_fleet = models.ForeignKey(Fleet)

   def __str__(self):
       return str(self.id_fleet)

views.py views.py

    def fleet_member_view(request):
        cursor = connection.cursor()
        cursor.execute("select fleet_member.id_fleet_id, array_to_string(array_agg(fleet_member.id_unit_id),',') as id_unit 
            from fleet_member, setup_unit 
            where fleet_member.id_unit_id = setup_unit.id group by fleet_member.id_fleet_id")
        row = cursor.fetchone()
        return render(request,'fleet_member_view.html',{'row': row}, context_instance= RequestContext(request))

i want to show data in my template 我想在模板中显示数据

{% for post in row %}
    <tr class="odd gradeX">
       <td>{{ post.id_fleet }}</td>
       <td>{{ post.id_unit }}</td>
    </tr>
{% endfor %}

but data cannot show anything, i try query SQL in command line data show well. 但数据无法显示任何内容,我尝试在命令行数据显示良好的情况下查询SQL。 why data cannot show in template? 为什么数据无法显示在模板中?

cursor.fetchone() retrieves the next row of a query result set and returns a single sequence, or None . cursor.fetchone()检索查询结果集的下一行,并返回一个序列,即None

{% ifnotequal row None %}
    <tr class="odd gradeX">
       <td>{{ row.0 }}</td>
       <td>{{ row.1 }}</td>
    </tr>
{% endifnotequal %}

You want to list all results, you should use cursor.fetchall() 要列出所有结果,应使用cursor.fetchall()

View 视图

def fleet_member_view(request):
    cursor = connection.cursor()
    cursor.execute("select fleet_member.id_fleet_id, array_to_string(array_agg(fleet_member.id_unit_id),',') as id_unit 
        from fleet_member, setup_unit 
        where fleet_member.id_unit_id = setup_unit.id group by fleet_member.id_fleet_id")
    row = cursor.fetchall()
    return render(request,'fleet_member_view.html',{'row': row}, context_instance= RequestContext(request))

Template 模板

{% for post in row %}
    <tr class="odd gradeX">
       <td>{{ post.0 }}</td>
       <td>{{ post.1 }}</td>
    </tr>
{% endfor %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM