情况是我有一个充满测试结果的数据库分成不同的测试集。每个测试都有一个名称,结果,开始时间,开始日期......,当前发生的是一周一次的测试集可以多次运行,在测试集下给出多个测试结果
目前,当我想在测试集下获取每个测试的最新结果时,我正在查询不同的测试名称,然后对于每个不同的名称我查询该名称并通过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)
答案 0 :(得分:1)
您可以尝试以下方法:
t = testset.objects.values('testName').annotate(Max('startDate'),Max('startTime'))
这将为您提供包含testName
,startDate
,startTime
键值对的对象'值 - 词典的列表,以满足所需条件。
您可以在此处完成条件但您可以尝试使用此方法来获取所有列。