Select 数据库中满足条件的记录的最小值 django ORM

Select minimum values of records in database where a condition is satisfied with django ORM

我有以下型号

class Lances(models.Model):
    licitante = models.CharField(...)
    valor_prop = models.DecimalField(...)
    momento = models.DateTimeField(...)
    flag = models.CharField(...)
    situacao = models.CharField(...)
    item = models.ForeignKey(Items, on_delete=models.CASCADE)

假设我的数据库有这个状态

我想要的是使用 django orm 的查询,return 是每个 licitante 的最小值,即。 ("Katálysis Comércio, Locação e Serviços em Equipamentos de Laboratório LTDA", 116000.0000,), ("AGILENT TECHNOLOGIES BRASIL LTDA", 117000.0000), ("PERKINELMER DO BRASIL LTDA.", 128500.0000)

我试过按 valor_prop 排序,然后 select 不同 licitante

queryset = Lances.objects.filter(item=355, situacao='').order_by('valor_prop').distinct('licitante').values_list('licitante', 'valor_prop')

但运气不好。

有没有办法在单个查询中 return 每个 licitante 的最小值?

您可以为此使用 GROUP BY

from django.db.models import Min

Lances.objects.values('licitante').annotate(min_valor_prop=Min('valor_prop')).values_list('licitante', 'min_valor_prop')

可以在 documentation

中找到更多信息