【问题标题】:Django: How to strip out spaces in the model field value and filter?Django:如何去除模型字段值中的空格并过滤?
【发布时间】:2015-05-13 20:16:09
【问题描述】:

name = “纽约”、“新泽西”、“新美国”等

通过使用以下查询,我将获得字符串包含 New

的所有结果
City.objects.filter(name__icontains="New") # Perfect

但是如何在不增加纽约之间的空间的情况下找到纽约

City.objects.filter(name__icontains="NewYork") # Not getting New York

如何过滤?请告诉我你的看法

【问题讨论】:

    标签: python django


    【解决方案1】:

    无需剥离任何东西,正则表达式就可以完成这项工作

    City.objects.filter(name__regex=r'(?i)new[\s\w]+')
    

    (?i) 使表达式不区分大小写,尽管您也可以简单地使用 __iregex

    https://docs.djangoproject.com/en/dev/ref/models/querysets/#regex

    【讨论】:

    • 谢谢..如果你有时间,你能写出你的正则表达式风格来去除值之间的空格吗..与此同时,我会尝试自己
    • 那是真的。我们可以用正则表达式来区分大小写。但是您的正则表达式不适用于任何值
    【解决方案2】:

    您已经得到了很好的答案,但您可能想尝试另一种方法:

    City.objects.filter(name__icontains=''.join(s.split())
    

    假设 s 是您过滤的字符串(例如“New York”)。

    更多信息请见split

    【讨论】:

    • 但是,再次阅读您的问题,我的印象是您可能正在尝试将记录与“纽约”与“纽约”进行匹配。在这种情况下,Django 的 ORM 必须能够执行这样的匹配,剥离/忽略字段中的空格并将其与键字符串进行比较。这将是一个有趣的问题。
    • 查看stackoverflow.com/questions/28767427/… 了解有关该主题的一些有趣信息
    猜你喜欢
    • 2015-08-03
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多