基本上我想查询打开和处理中的测试日志,并排除关闭的
My Test Model有Status字段,它是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对象并排除'关闭'
答案 0 :(得分:1)
更简单的方法是使用__in
:
InspectorTestLog.objects.filter(status__status__in=['Open', 'Under Process'])
或.exclude
:
InspectorTestLog.objects.exclude(status__status='Closed')
答案 1 :(得分:0)
您可以使用Q对象组合查询。在您的情况下,您的查询可能如下所示:
from django.db.models import Q
test_logs = InspectorTestLog.objects.fiter(Q(status__status='Open') | Q(status__status='Under Process'))
这将检索状态为“打开”或“正在处理”的所有test_log(默认情况下排除状态为“已关闭”的那些。)
您还可以编写一个只排除具有“已关闭”状态的test_log的查询,这将完成同样的事情:
test_logs = InspectorTestLog.objects.exclude(status__status='Closed')