我在做我的研究项目。我有两个模型:
class RoutePoint(geo_models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE, null=False, blank=False,
related_name='routepoints')
point = geo_models.PointField()
datetime = models.DateTimeField()
class Travel(models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.DO_NOTHING, null=False, blank=False,
related_name='travels')
begin = models.DateTimeField()
end = models.DateTimeField()
第一个包含车辆的地理位置和车辆到达那里的日期和时间。第二个包含车辆乘坐的开始和结束。
我有一个curl请求,它有两个字段-start_date
和end_date
,我们称之为某种报告请求。
所以,首先我需要得到这样的东西:
SELECT vehicle_id, begin, end
FROM park_travel
WHERE begin > "2022-12-30" AND end < "2023-01-06"
我将它命名为result
。
在那之后,我需要得到这样的东西:
SELECT vehicle_id, point, datetime
FROM park_routepoint
WHERE vehicle_id = result.vehicle_id
AND datetime > result.begin
AND datetime < result.end
而且我必须在没有原始sql的情况下完成...
2条答案
按热度按时间kiz8lqtg1#
您可以使用双下划线表示法和
F
表达式在一个查询中执行此操作:然后简单地迭代
route_points
查询集:wvt8vs2t2#
您可以过滤Travel查询集:
现在您可以使用
travel_qs
从RoutePoint检索点: