筛选数据models.objects.all()。exclude()或models.objects.filter()的首选方法

时间:2014-04-04 15:15:54

标签: python django

我只是好奇。正确的方法是什么,或者我应该说,过滤数据的有效方法是什么?我还在学习。假设您有数千条记录,那么您想要检索所有活动记录。

应该这样做。

Records.objects.all().exclude(active=False)

或者

Records.objects.filter(active=True)

他们有区别还是差不多?

1 个答案:

答案 0 :(得分:1)

这两个表达式产生不同的查询。

您始终可以通过查看查询集的query属性来检查它们:

>>> print Records.objects.all().exclude(active=False).query

Records.objects.all().exclude(active=False)产生:

SELECT 
    <list_of_fields> 
FROM 
    `<table_name>` 
WHERE 
    NOT (`<table_name>`.`active` = False)

Records.objects.filter(active=True)产生:

SELECT 
    <list_of_fields> 
FROM 
    `<table_name>` 
WHERE 
    `<table_name>`.`active` = True

另见: