使用wild - char过滤模型对象



我需要能够使用通配符进行过滤,例如:

Surnames.objects.filter(surname="GR%FF%N")

应该返回具有以下姓氏的对象:GRIFFIN, GREFFTEN, GRAFFAIN,等等。现在很明显filter不识别%作为通配符,但上面的代码应该演示我需要做什么。我还希望限制返回结果的数量。你建议我怎么做呢?

您可以通过使用__regex来使用正则表达式查找(Django-doc):

Surnames.objects.filter(surname__regex='^GR.*FF.*N$')

您可以通过切片查询集来限制结果的数量:

Surnames.objects.filter(surname__regex='^GR.*FF.*N$')[:20]

返回前20个结果。由于我们没有使用.order_by(),它可以按任何顺序返回项。

在支持数据库的Django上有很多过滤方法。

对于通配符查询,您可以这样做:

Surnames.objects.filter(surname__icontain="YOUR QUERY TERM")
Surnames.objects.filter(surname__contain="YOUR QUERY TERM")

上面一个是区分大小写的,另一个是不区分大小写的

也有一些其他的查找,你可以帮助你完成你的工作:

startswithendswithistartswithiendswith

也可以通过regex查找的regex模式进行查询。

下面我告诉你如何完成你的工作:

Surnames.objects.filter(surname__regex="YOUR REGEX PATTERN")
Surnames.objects.filter(surname__startswith="YOUR QUERY TERM")
Surnames.objects.filter(surname__iendswith="YOUR QUERY TERM")
Surnames.objects.filter(surname__istartswith="YOUR QUERY TERM")

相关内容

  • 没有找到相关文章

最新更新