查询集用两个不同的查询集注释

时间:2018-11-19 19:10:08

标签: django django-rest-framework django-queryset

我是第一次使用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()

对此表示任何帮助,我们将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

您将无法使用查询集进行组合,因为它们被设计为特定于模型的(代理和抽象模型除外)。

但是,您可以使用列表推导将它们组合在一起,或者使用itertools.chain(效率更高)来组合来自查询集的两个结果。

但是,您将失去查询集的“惰性”,稍后可能会对性能产生影响。