如何从Django-RawQuerySet获取元组列表?

2024-09-29 22:30:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django中使用原始SQL进行复杂的查询,以解决一些注释问题。 实际的查询有许多left连接,这些连接被转换为子查询,以避免Django中的一个主要错误。 https://code.djangoproject.com/ticket/10060

给予

fields = ['shift__adminFee',                                      
        'shift__rosterSlot__adminFee',
        'shift__taxi__rosterGroup__adminFee',
        'shift__driver__adminFee']

query = `''select table.id, "table_shift"."adminFee"
, "table_rosterslot"."adminFee"
, "table_rostergroup"."adminFee"
, "table_driver"."adminFee"  from table 
left join ( select table_id, sum(amount) amount_sum from related_table group by table_id ) related_table
on table.id = related_table.table_id
...
( more inner joins and tables to support the above fields )
'''
rawQuerySet = Table.objects.raw(q)

它返回一个RawQuerySet。

RawQuerySet很好用。。。它填充了相关模型,并给出了正确的注释结果。

然而,RawQuerySet不支持返回元组列表。

我查看了项目本地的源文件'env/lib/python2.7/site-packages/django/db/models/查询.py' 但我还不明白,我有一个结果要产生。

因此,不要将结果作为tuples=query.values\u列表(*字段) 我做了一些类似

^{pr2}$

如何从Django RawQuerySet获取元组列表 类似results\u-list-of-tuples=values\u-list(原始查询集,*字段)


Tags: djangofromidfields列表shiftdrivertable
1条回答
网友
1楼 · 发布于 2024-09-29 22:30:04

您可以通过RawQuerySet属性从columns获取列名列表。可以通过以下方式从原始查询集创建values_list迭代器:

def raw_queryset_as_values_list(raw_qs):
    columns = raw_qs.columns
    for row in raw_qs:
        yield tuple(getattr(row, col) for col in columns)

属性columns未记录,但稳定。在

相关问题 更多 >

    热门问题