我知道使用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
在特定时间段内可用的,并且还可以获得
price
的
位置
在这段时间内?我们假设
Availability
具有相同位置的对象不能有重叠的开始/结束日期时间。
如果
user_start_datetime
和
user_end_datetime
是由用户输入的,那么我们可以做如下的事情:
Location.objects.filter(
availability__start_datetime__lte=start_datetime,
availability__end_datetime__gte=end_datetime)
但我不知道该如何得到
价格
特定字段
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')
但是那只会让我
全部的
可用于
位置
与查询匹配的对象。我只是想要
一
可利用性
这是在查询的时间范围内,更具体地说,是
价格
其中
可利用性
.