Django, запрос для получения определенных значений с отдельным именем и самой последней датой и временем - PullRequest
1 голос
/ 20 января 2012

Ситуация такова, что у меня есть база данных, полная результатов испытаний, разбитых на разные наборы тестов.У каждого теста есть имя, результат, время начала, дата начала и т. Д., То, что в настоящее время происходит в течение недели, наборы тестов можно запускать несколько раз, давая несколько результатов теста в наборе тестов

В настоящее время, когда яЯ хочу получить последний результат каждого теста в наборе тестов, который я запрашиваю для разных имен тестов, а затем для каждого отдельного имени, который я запрашиваю для этого имени и упорядочивая его по startDate и startTime, чтобы получить последние.Это боль, потому что когда у меня есть набор тестов с более чем 100 различными тестами, он значительно ухудшается.

То, что я пытаюсь сделать, это выполнить то, что я хочу, одним вызовом django.objects ...

Вот mysql для эффективного представления того, чего я хочу достичь:

выберите testName, результат, MAX (startDate), MAX (startTime), othertestinfo из набора тестов, где testset_id = 'UniqueID' группа по testName;

Мне трудно пытаться выяснитьэто в Джанго, если это вообще возможно.

Любая помощь будет высоко ценится.

Спасибо

Обновление 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 Ответ

1 голос
/ 21 января 2012

Вы можете попробовать следующее:

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

Это даст вам список значений-словарей объектов, содержащих пары ключ-значение testName, startDate, startTime для требуемого условия.

Вы бы выполнили условие в этом, но вы можете попробовать поэкспериментировать с этим, чтобы получить все столбцы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...