我是第一次使用Django orm操作将两个查询集结合在一起。这是我的要求。我有两个数据集。第一个数据集具有三列,分别是日期时间,col1和第二个数据集,具有start_date,end_date,week_num。输出数据应为weeknum,col1。如何使用django组合这两个模型?
第一个数据集:
version: "3"
services:
rango_api:
container_name: rango
build: ./
# command: python manage.py runserver 0.0.0.0:8000
command: python manage.py runserver 0.0.0.0:8000
working_dir: /usr/src/rango_api
environment:
REDIS_URI: redis://redis:6379
MONGO_URI: mongodb://rango:27017
ports:
- "8000:8000"
volumes:
- ./:/usr/src/rango_api
links:
- redis
- elasticsearch
- mongo
#redis
redis:
image: redis
environment:
- ALLOW_EMPTY_PASSWORD=yes
ports:
- "6379:6379"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.0
ports:
- "9200:9200"
- "9300:9300"
mongo:
image: mongo
ports:
- "27017:27017"
第二个数据集:
datetime col1
2018-10-04 08:00:00 10
输出数据集:
start_date end_date week_num
2018-10-04 07:00:00 2018-10-11 07:00:00 42
到目前为止,我的代码:
weeknum col1
42 10
我知道我只是在输入基本数据集,但是我无法继续前进。
对此的SQL查询将是:
qs1=models.dataset1.objects.all()
qs2=models.dataset2.objects.all()
对此表示任何帮助,我们将不胜感激。谢谢。
答案 0 :(得分:0)
您将无法使用查询集进行组合,因为它们被设计为特定于模型的(代理和抽象模型除外)。
但是,您可以使用列表推导将它们组合在一起,或者使用itertools.chain(效率更高)来组合来自查询集的两个结果。
但是,您将失去查询集的“惰性”,稍后可能会对性能产生影响。