Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按给定字段连接2个django查询集,并按顺序排序_Python_Django - Fatal编程技术网

Python 按给定字段连接2个django查询集,并按顺序排序

Python 按给定字段连接2个django查询集,并按顺序排序,python,django,Python,Django,我有以下型号: class TimeStamp(): mydate = models.DateTime() value = models.Integer() cat = models.CharField() 数据表将如下所示: mydate | value | cat ======================= 1st Jan | 10 | A 2nd Jan | 10 | A 3rd Jan | 10 | A 4th Jan

我有以下型号:

class TimeStamp():
    mydate = models.DateTime()
    value = models.Integer()
    cat = models.CharField()
数据表将如下所示:

mydate   | value  | cat
=======================
1st Jan  | 10     | A
2nd Jan  | 10     | A
3rd Jan  | 10     | A
4th Jan  | 5      | A
1st Jan  | 5      | B
2nd Jan  | 20     | B
3rd Jan  | 15     | B
4th Jan  | 30     | B
输出表是这样的,所以我们通过匹配日期进行连接,然后按值对A进行排序,然后按值对B进行排序。注意下表是预期的输出,请注意日期的顺序以及值A和值B的顺序

mydate   | value_A  | value_B
==============================
4th Jan  | 5        | 30
1st Jan  | 10       | 5
3rd Jan  | 10       | 15
2nd Jan  | 10       | 20
我可以获得2个查询集:

qs_a = TimeStamp.objects.filter(cat='A')
qs_b = TimeStamp.objects.filter(cat='B')
我不知道如何将这两个连接在一起。请注意,|将合并两个集合,这不是我想要的。。。 我想加入这两个查询集,然后按A再按B排序,这样日期列表就可以按Cat=A的值的顺序排列,然后按Cat=B的值的顺序排列。

您可以使用它来完成此操作

from itertools import chain
qs_chain = chain(qs_a, qs_b)

这是否回答了您的问题?

您可以使用

from itertools import chain
qs_chain = chain(qs_a, qs_b)

这回答了你的问题吗?

这回答了你的问题吗?否,OR筛选器不允许我加入2个查询集,然后按cat=B的值排序,然后按cat=A排序回答您的问题?不,OR筛选器不允许我加入2个查询集,然后按cat=B的值排序,然后按cat=A的值排序,这将把2个QerySet连接在一起,但我需要按cat=A的值排序,然后按cat=B的值排序,你的意思是你想要一个带有cat='A'或'B'的查询集,然后按某个值排序?这就是你要找的吗<代码>时间戳.objects.filter(cat_uin=['A','B']])。排序依据('value')是排序应首先按cat='A'处的“值”排序,然后按cat='B'处的值排序。请参见我的问题中包含3列的示例表当您运行查询时,您会得到满足查询的表的图像。我不认为你可以把它们都加上。但我认为您可以获得这些查询的值,并生成一个可能满足您需求的dict
final={'4 Jan':{'val_A':X,'val_B':Y}}
这会有用吗?请注意,这会将两个QerySet连接在一起,但我需要按cat=A的值排序,然后按cat=by的值排序。您的意思是希望查询集使用cat='A'或'B',然后按某个值排序?这就是你要找的吗<代码>时间戳.objects.filter(cat_uin=['A','B']])。排序依据('value')是排序应首先按cat='A'处的“值”排序,然后按cat='B'处的值排序。请参见我的问题中包含3列的示例表当您运行查询时,您会得到满足查询的表的图像。我不认为你可以把它们都加上。但我认为您可以获得这些查询的值,并生成一个可能满足您需求的dict
final={'Jan'4:{'val_A':X'val_B':Y}
这有用吗?