基于时间和ForeignKey值的Django查询模型

基于时间和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

我需要查询Django对象的帮助。我有3个模型:建筑、地图和报告。一座建筑可以有许多地图。一个地图可以有多个报告。给定一栋建筑的名称,我想找到每层楼的最新报告。也就是说,我想要一个报告列表,其中每个报告都有不同的楼层,每个报告都是该楼层的最新报告

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。那么,你在哪里存储数据?