过滤数据模型的推荐方式:使用 .exclude() 还是 .filter()?
我很好奇,过滤数据的正确方法或者说高效的方法是什么?我还在学习中。假设你有成千上万条记录,然后你想要找出所有活跃的记录。
应该像这样做吗?
Records.objects.all().exclude(active=False)
还是说这样做?
Records.objects.filter(active=True)
这两种方法有什么区别吗,还是说其实是一样的?
1 个回答
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
另外,参考一下: