【问题标题】:Django Making query Raw SQLDjango 查询原始 SQL
【发布时间】:2015-11-21 09:23:58
【问题描述】:

型号

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

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

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))

我想在我的模板中显示数据

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

但数据无法显示任何内容,我尝试在命令行数据中显示查询 SQL。为什么数据不能在模板中显示?

【问题讨论】:

    标签: python django


    【解决方案1】:

    cursor.fetchone() 检索查询结果集的下一行并返回单个序列或None

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

    你想列出所有结果,你应该使用cursor.fetchall()

    查看

    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))
    

    模板

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

    【讨论】:

    • 感谢您的回答。但我收到错误 Invalid block tag: 'endfor', expected 'else' or 'endifnotequal'
    • 因为你使用的是cursor.fetchone()
    • 那么如何解决呢?在我使用 Class.objects.raw("Select query") 但我收到错误'Manager'对象没有属性'row'之前。所以我用这个教程stackoverflow.com/questions/5931586/…
    • 感谢我在 python manage.py shell 中尝试它的工作。但在我的模板中没有显示
    • 我编辑 {{ post.0 }} 和 {{ post.1 }} 它的工作。谢谢
    猜你喜欢
    • 2012-03-16
    • 2018-05-15
    • 2013-04-17
    • 2019-08-05
    • 2011-02-01
    • 2013-12-31
    • 2011-08-21
    • 2016-10-20
    • 2017-04-08
    相关资源
    最近更新 更多