Django,查询以获取具有不同名称和最新日期和时间的特定值

时间:2012-01-20 13:55:29

标签: mysql django

情况是我有一个充满测试结果的数据库分成不同的测试集。每个测试都有一个名称,结果,开始时间,开始日期......,当前发生的是一周一次的测试集可以多次运行,在测试集下给出多个测试结果

目前,当我想在测试集下获取每个测试的最新结果时,我正在查询不同的测试名称,然后对于每个不同的名称我查询该名称并通过startDate和startTime进行排序以获取最新的。这是一种痛苦,因为当我拥有超过100种不同测试的测试集时,它会大幅降低。

我想做的是在django.objects的一次调用中执行我想要的...

这是有效代表我想要实现的内容的mysql:

  

从testset中选择testName,result,MAX(startDate),MAX(startTime),othertestinfo,其中testset_id ='UniqueID'group by testName;

我很难在django中解决这个问题,如果它可能的话。

非常感谢任何帮助。

由于

更新23/1/12

我正在使用的模型。

class testCase(models.Model):

    id = models.AutoField(primary_key=True)
    testName = models.CharField(max_length=50)
    result = models.CharField(max_length=50)
    precision = models.CharField(max_length=10)
    fileLocation = models.CharField(max_length=150)
    testset_id = models.ForeignKey(testset)
    machine = models.CharField(max_length=15)
    startDate = models.DateField()
    startTime = models.TimeField()

class testset(models.Model):
    testsetID = models.CharField(max_length=100, primary_key=True)
    testsetName = models.CharField(max_length=40)
    platformName = models.CharField(max_length=15)
    osName = models.CharField(max_length=15)
    executionName = models.CharField(max_length=40)
    version = models.CharField(max_length=10)
    software = models.CharField(max_length=20)
    runType = models.CharField(max_length=20)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

t = testset.objects.values('testName').annotate(Max('startDate'),Max('startTime'))

这将为您提供包含testNamestartDatestartTime键值对的对象'值 - 词典的列表,以满足所需条件。

您可以在此处完成条件但您可以尝试使用此方法来获取所有列。