簡體   English   中英

如何對另一個查詢集/查詢進行INNER JOIN

[英]How to do INNER JOIN to another queryset/query

我對Django ORM有問題。 我有一個天氣模型:

    class Weather(models.Model):
        city = models.ForeignKey(City, verbose_name='Город', on_delete=models.CASCADE)
        temperature = models.FloatField('Температура')
        source = models.CharField('Источник', max_length=100)
        date = models.DateTimeField('Дата и время')

我想從每個城市的各個來源獲取實際天氣。 我為此創建了sql查詢,但我不知道如何使用Django ORM進行查詢。

查詢:

SELECT * FROM api_weather t1 INNER JOIN
(
    SELECT MAX(date) AS latest_date, city_id, source FROM api_weather WHERE date<='2019-07-04 15:50' GROUP BY city_id, source
) t2
ON t1.city_id = t2.city_id AND t1.source = t2.source AND t1.date = t2.latest_date

我意識到該怎么辦

SELECT MAX(date) AS latest_date, city_id, source FROM api_weather WHERE date<='2019-07-04 15:50' GROUP BY city_id, source

使用Django ORM,

Weather.objects.filter(date__lte=datetime.datetime.now()).values('city_id', 'source').annotate(latest_date=Max('date'))

但我不知道如何從Weather模型向此查詢執行INNER JOIN。

Weather.objects.values('city', 'source', 'temperature').annotate(latest_date=Max('date'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM