2011-06-15 67 views
0
對象

基本上我想查詢測試日誌這是公開賽和在過程與排除關閉那些查詢與多個字段值

我的測試模型具有狀態字段是外鍵如下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 

我已爲「打開」,「Closed'and‘在過程中的三個狀態’

我如何查詢InspectorTestLog與狀態的對象爲(」開放」和‘在處理’)和排除'關閉'

回答

0

您可以使用Q對象來組合查詢。在您如果您的查詢可能如下所示:

from django.db.models import Q 

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

這會檢索所有test_logs的狀態爲「打開」或「在處理」(並且默認排除那些與「封閉」狀態。)

你也可以編寫一個查詢,只是排除test_logs與「封閉」狀態,這將完成同樣的事情:

test_logs = InspectorTestLog.objects.exclude(status__status='Closed') 
1

更簡單的方法是使用__in

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

.exclude

InspectorTestLog.objects.exclude(status__status='Closed')