我有一个模型Scan
。一天内每个Car
有多次扫描。
每次扫描都有日期时间。
编辑:已更改 - 可以从扫描对象直接访问日期时间 EDIT2:
这种方法有效,但它选择白天的第一次扫描,而不是最后一次扫描。
car.scans.filter(valid=True).distinct('date')
class Car...
...
class Scan...
datetime = DateTimeField...
scanning = ForeignKey('Scanning'...
car = ForeignKey('Car'...
value = IntegerField(...
valid = BooleanField(...
现在我想为汽车创建一个图表。会有日子和价值观。对于每一天,只有一个值(最新的有效值)。
由于每天可以进行多次扫描,我希望在一天内完成最后一次扫描。
汽车 约会时间 值<小时/> 结果将是:
01.05.2017 - 8
02.05.2017 - 12
03.05.2017 - 9
我只想到我想知道日期列表和每个日期,获取所有扫描 - 然后拉最后一次扫描。
但我正试图找到一种更有效的方法,因为可以进行数千次扫描。
你知道该怎么办吗?
答案 0 :(得分:0)
读取的最佳方法是使用中间表来保存每辆车的最后状态。这将涉及一些额外的更新,但最终阅读将很容易。
其他方法是将查询与子选择一起用作
Scan.objects.annotate(max_date=Max('car__scan__datetime')).filter(date=F('max_date'))