Django QuerySet,根据每个数据列/字段的最新条目过滤数据,该条目等于特定值

Django QuerySet,根据每个数据列/字段的最新条目过滤数据,该条目等于特定值,django,django-models,django-queryset,django-orm,Django,Django Models,Django Queryset,Django Orm,订单型号有外键租赁车辆,指车辆型号 我已经根据pickupstore状态过滤了数据,例如,在特定状态下从存储中提取的车辆列表 #models.py class Orders(models.Model): orderid = models.IntegerField(db_column='orderID', primary_key=True) createdate = models.DateField(db_column='createDate', blank=True, null

订单型号有外键租赁车辆,指车辆型号

我已经根据pickupstore状态过滤了数据,例如,在特定状态下从存储中提取的车辆列表

#models.py
class Orders(models.Model):
    orderid = models.IntegerField(db_column='orderID', primary_key=True) 
    createdate = models.DateField(db_column='createDate', blank=True, null=True) 
    pickupdate = models.DateField(db_column='pickupDate', blank=True, null=True)  
    returndate = models.DateField(db_column='returnDate', blank=True, null=True)  
    pickupstore = models.ForeignKey(Branch, models.DO_NOTHING, db_column='pickupStore', blank=True, null=True,related_name = 'pickupstore')  
    returnstore = models.ForeignKey(Branch, models.DO_NOTHING, db_column='returnStore', blank=True, null=True,related_name = 'returnstore') 
    rentedvehicle = models.ForeignKey('Vehicles', models.DO_NOTHING, db_column='rentedVehicle', blank=True, null=True)  
    customer = models.ForeignKey(Customer, models.DO_NOTHING, db_column='customer', blank=True, null=True)


class Vehicles(models.Model):
    vehicleid = models.IntegerField(db_column='vehicleID', primary_key=True)  
    make = models.CharField(max_length=45, blank=True, null=True)
    model = models.CharField(max_length=45, blank=True, null=True)
    series = models.CharField(max_length=45, blank=True, null=True)
我希望能够过滤上面过滤的数据,这样我就可以得到在特定状态下从仓库中提取的车辆列表,其最新条目位于Orders models has returnstore_uuState==特定状态

#models.py
class Orders(models.Model):
    orderid = models.IntegerField(db_column='orderID', primary_key=True) 
    createdate = models.DateField(db_column='createDate', blank=True, null=True) 
    pickupdate = models.DateField(db_column='pickupDate', blank=True, null=True)  
    returndate = models.DateField(db_column='returnDate', blank=True, null=True)  
    pickupstore = models.ForeignKey(Branch, models.DO_NOTHING, db_column='pickupStore', blank=True, null=True,related_name = 'pickupstore')  
    returnstore = models.ForeignKey(Branch, models.DO_NOTHING, db_column='returnStore', blank=True, null=True,related_name = 'returnstore') 
    rentedvehicle = models.ForeignKey('Vehicles', models.DO_NOTHING, db_column='rentedVehicle', blank=True, null=True)  
    customer = models.ForeignKey(Customer, models.DO_NOTHING, db_column='customer', blank=True, null=True)


class Vehicles(models.Model):
    vehicleid = models.IntegerField(db_column='vehicleID', primary_key=True)  
    make = models.CharField(max_length=45, blank=True, null=True)
    model = models.CharField(max_length=45, blank=True, null=True)
    series = models.CharField(max_length=45, blank=True, null=True)
所以基本上,我想实现这一点:

Vehicles.objects.filter(orders__pickupstore__state = request.POST['state'])

许多可能的解决办法。最佳取决于您的Django 1.11版或更高版本?。这里有一个可能的解决方案:

Vehicles.objects.filter(orders__pickupstore__state = request.POST['state']).filter(the latest entry returnstore state =request.POST['state'])

这里发生的事情是,我们正在识别最新的退货日期,然后过滤订单以仅包括最新的订单,然后根据最新订单的状态过滤车辆。

我使用django 2.1,谢谢,但它实际上不起作用。当我使用该代码时,还有一些其他状态仍然出现。我修复了代码中的变量:topCar=Vehicles.objects.filterorders\uuu pickupstore\uuuu state=request.POST['state']。annotatemax\u date=Max'orders\uuuu returndate'.filterorders\uuu returndate=F'Max\u date'.filterorders\uu returnstore\uu state=request.POST['state']