模型过滤器 django 中的标题和 title_icontains 不同

different between title and title_icontains in model filter django

django 中的标题和 title_icontains 有什么区别?

from .model import product
product.objects.filter(title='blah')
product.objects.filter(tite__icontains='blah')

可能是 title__icontains=… 所以有 两个 连续下划线 (__)。在这种情况下,您可以使用 __icontains lookup [Django-doc]。正如文档所说,这是一个:

Case-insensitive containment test.

因此它会查找标题 包含 blahProduct。例如 fooblahblahfoofooblahbar。它以 insensitive 方式执行此操作,因此标题为 FooBlahBLAHfooFooBlAHBAR 的产品也将被保留。

第一个表单 ...filter(title='value') 将 return 所有 objects 其标题将与值完全匹配。

而第二种形式,正确写为 ...filter(title__icontains) 将 return 所有 objects 其标题包含该值,但任何 upper/lower 大小写字母将匹配。 这里的i表示“忽略大小写”。

tite__icontains是查找字符串,但是不区分大小写。