我正在尝试构建一个过滤电话号码(CharField
)的django查询,但不包括括号
例如
如果我搜索0123456789
,则会找到(01) 234 567 89
由于
答案 0 :(得分:3)
好吧,您可以使用regex,也可以重新格式化搜索:
pn = '0123456789'
Model.objects.filter(phone='(%s) %s %s %s' % (pn[:2], pn[2:5], pn[5:8], pn[8:]))
理想情况下,您将所有电话号码标准化,然后您将以该格式搜索它们。如果您查看django.contrib.localflavors.us
的{{1}},则会强制所有新电话号码以PhoneNumberField
格式保存。如果你没有以某种方式规范电话号码,你应该这样做。处理多种潜在格式并不好玩。
答案 1 :(得分:0)
您还可以在查找中使用正则表达式。请参阅:https://docs.djangoproject.com/en/dev/ref/models/querysets/#s-regex
答案 2 :(得分:0)
我从不喜欢回答我自己的问题,但这个解决方案可能对其他做类似事情的人有所帮助:
我使用@property
装饰器在模型上定义了一个函数。
class MyModel(models.model):
....
phoneNumber = CharField...
@property
def raw_phone_number(self):
# function strips those characters and returns just the number