Объекты запроса с более чем одним значением поля - PullRequest
0 голосов
/ 15 июня 2011

В основном я хочу запросить журналы испытаний, которые открыты и находятся в процессе обработки, и исключить журналы закрытия.

Моя тестовая модель имеет поле состояния, которое является внешним ключом для модели BugStatus, как показано ниже:

class InspectorTestLog(models.Model):
    expected_result = models.TextField(max_length = 1000, blank = True) 
    status = models.ForeignKey(BugStatus, blank = True , null = True)
    datetime = models.DateTimeField(auto_now_add = True)

class BugStatus(models.Model):
    status = models.CharField(max_length = 50)status
    description = models.TextField(max_length = 1000, blank = True, null = True) 
    def __unicode__(self): 
        return self.status 

Я дал три статуса: «Открыто», «Закрыто» и «В процессе»

Как запросить объекты InspectorTestLog со статусом («Открыть» и «В процессе») и исключить«Близкие»

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Более простой способ - использовать __in:

InspectorTestLog.objects.filter(status__status__in=['Open', 'Under Process'])

или .exclude:

InspectorTestLog.objects.exclude(status__status='Closed')
0 голосов
/ 15 июня 2011

Вы можете использовать объекты Q для объединения запросов.В вашем случае ваш запрос может выглядеть следующим образом:

from django.db.models import Q

test_logs = InspectorTestLog.objects.fiter(Q(status__status='Open') | Q(status__status='Under Process'))

Это вернет все test_logs со статусом «Open» или «Under Process» (и по умолчанию исключит те, которые имеют статус «Closed».)

Вы также можете написать запрос, который просто исключает test_logs со статусом «Закрыт», что позволит выполнить то же самое:

test_logs = InspectorTestLog.objects.exclude(status__status='Closed')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...