如何通过相关对象查询模型并使用 Django ORM 在查询集中获取相关对象

我知道可以使用 Django ORM 使用反向相关字段查询模型。但是是否也可以获取查询匹配的反向相关模型的所有字段?


例如,如果我们有以下模型:


class Location(models.Model):

    name = models.CharField(max_length=50)



class Availability(models.Model):

    location = models.ForeignKey(Location, on_delete=models.CASCADE)


    start_datetime = models.DateTimeField()

    end_datetime = models.DateTimeField()


    price = models.PositiveIntegerField()

是否有可能找到Location在特定时间范围内可用的所有sprice并Location在该可用性期间获得 s ?我们假设Availability具有相同位置的对象不能有重叠的开始/结束日期时间。


如果user_start_datetime和user_end_datetime是由用户输入的,那么我们可能会执行以下操作:


Location.objects.filter(

    availability__start_datetime__lte=start_datetime,

    availability__end_datetime__gte=end_datetime)

但我不确定如何获取导致查询匹配price的特定字段availability。


在原始 SQL 中,我正在谈论的行为可能可以通过以下方式实现:


SELECT l.id, l.name, a.price

FROM Location l

INNER JOIN Availability a

ON a.location_id = l.id

WHERE /* availability is within user-inputted timeframe */

我考虑过使用类似的东西prefetch_related('availability_set'),但这只会为我提供与查询匹配的对象的所有可用性Location。我只是想一个 availability,这是该期限内被查询,以及更具体地讲,price那availability。


梵蒂冈之花
浏览 136回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python