基于时间和ForeignKey值的Django查询模型
我需要查询Django对象的帮助。我有3个模型:建筑、地图和报告。一座建筑可以有许多地图。一个地图可以有多个报告。给定一栋建筑的名称,我想找到每层楼的最新报告。也就是说,我想要一个报告列表,其中每个报告都有不同的楼层,每个报告都是该楼层的最新报告基于时间和ForeignKey值的Django查询模型,django,django-models,Django,Django Models,我需要查询Django对象的帮助。我有3个模型:建筑、地图和报告。一座建筑可以有许多地图。一个地图可以有多个报告。给定一栋建筑的名称,我想找到每层楼的最新报告。也就是说,我想要一个报告列表,其中每个报告都有不同的楼层,每个报告都是该楼层的最新报告 class Building(models.Model): building_id = models.AutoField('BID', auto_created=True, primary_key=True) name
class Building(models.Model):
building_id = models.AutoField('BID', auto_created=True, primary_key=True)
name = models.CharField('Name', max_length=128)
class Map(models.Model):
map_id = models.AutoField('MID', auto_created=True, primary_key=True)
building_id = models.ForeignKey(Building, on_delete=models.CASCADE, default=1)
floor = models.CharField('Floor Number', max_length=128)
class Report(models.Model):
report_id = models.AutoField('RID', auto_created=True, primary_key=True)
map_id = models.ForeignKey(Map, on_delete=models.CASCADE, default=1)
building_id = models.ForeignKey(Building, on_delete=models.CASCADE, default=1)
created_date = models.DateTimeField(auto_now_add=True)
下面我有一些伪代码,但肯定有一种更简单的方法使用Django过滤器。有什么想法吗
name = "Mall"
# All of the buildings reports
reports = Reports.filter(building_id__name= name)
floors_seen = []
latest_reports = []
for report in reports:
floorNumber = report.map_id.floor_num
if floorNumber not in floors_seen:
floors_seen.append(floorNumber)
latest_reports.append(report)
else:
for latest_report in latest_reports:
if latest_report.map_id.floor_num == floorNumber:
if report.created_date > latest_report.created_date:
latest_reports.remove(latest_report)
latest_reports.append(report)
你在使用postgres吗?@hancho不,我不是,Django和Python Only。那么,你在哪里存储数据?