我有一个模型,其中有2个字段。

class MyModel:
   tcode = Charfield
   created_on = Date field
   #some more fields

现在,此模型可以有多个具有相同tcode的行,并且每一行可以具有不同的日期或相同的日期。

例如
tcode1, 1/2/2001
tcode2, 1/2/2001
tcode2, 2/2/2001
....etc.

我想过滤此模型上的查询,以便tcode和日期字段组合应该是唯一的。我如何获得所有这些对象。

我正在尝试这样做
MyModel.objects.all().order_by('tcode').distinct('tcode', 'created_on')
现在,您可能会问,以防在两个字段中有两行具有相同数据的情况下我想要哪一行!对我来说没关系,任何行都可以正常工作。

最佳答案

我认为没有一个查询可以做到这一点,因为数据库没有机制从重复项中随机选择一个。但是,如果您只关心这两个字段,则可以执行以下操作:

MyModel.objects.order_by('tcode').values('tcode', 'created_on').distinct()

这不会为您提供完整的MyModel对象,而是一个字典列表,其中包含tcodecreated_on的所有现有组合。

关于mysql - Django在两个字段上按查询进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33088337/

10-12 15:00