gpt4 book ai didi

django - 如何获取 Django 查询集中的列列表?

转载 作者:行者123 更新时间:2023-12-02 03:09:02 25 4
gpt4 key购买 nike

我有一个代码可以从不同的表创建多个复杂的查询集,使用大量注释等...

然后代码使用 union 连接这些查询集。

这些查询集中的每一个本身似乎都很好。调用 print(len(qset)) 对它们中的每一个都有效。

但是在 combined_qset = qset1.union(qset2) 之后,我得到以下错误:

django.db.utils.ProgrammingError: each UNION query must have the
same number of columns
LINE 1: ..., '') AS "owner" FROM "t1") UNION (SELECT "field_x...
^

当我查看代码时,我会计算 .only(...).values(...) 调用中的字段数,计算注释的数量等,似乎所有这些查询集都具有完全相同的列数。

错误消息只显示了生成的 SQL 的一小部分(见上文),因此并没有多大帮助。

有没有一种简单的方法来获取查询集的列列表,这样我就可以找到差异并修复它?

最佳答案

我明白了!

print('qset1:', len(qset1), qset1[0].__dict__.keys())
print('qset2:', len(qset2), qset2[0].__dict__.keys())
print('qset3:', len(qset2), qset3[0].__dict__.keys())
...

qset[0] 给出查询集的第一行qset(这仅在查询集至少有一行时有效)

.__dict__ 将该行转换为字典 - 字典的键是列名,值是行元素

.keys() 给出字典的键列表,因此,列

这将打印所有查询集的列列表。

关于django - 如何获取 Django 查询集中的列列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com