Gra*_*ing 3 django django-queryset
我有一个代码,可以使用大量注释等从不同的表创建多个复杂的查询集......
然后代码使用 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...
^
Run Code Online (Sandbox Code Playgroud)
.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())
...
Run Code Online (Sandbox Code Playgroud)
qset[0]给出查询集的第一行qset(仅当查询集至少有一行时才有效)
.__dict__将该行转换为字典 - 字典的键是列名,值是行元素
.keys()给出字典的键列表,因此,列
这将打印所有查询集的列列表。
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |