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
中找到更多信息
我有以下型号
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
中找到更多信息