假设我有一个带有邮政编码字段的地址模型。我可以用邮政编码开始,“123”这一行查找地址:Django开始在字段
Address.objects.filter(postcode__startswith="123")
现在,我需要做的这个“周围的其他方式”搜索。我有一个带有postcode_prefix字段的Address模型,我需要检索postcode_prefix是给定代码前缀的所有地址,如“12345”。所以如果在我的数据库中有两个地址postcode_prefix =“123”和“234”,只有第一个会被返回。
喜欢的东西:
Address.objects.filter("12345".startswith(postcode_prefix))
的问题是,这是行不通的。 唯一的解决办法我能想出是对第一个字符进行过滤,如:
Address.objects.filter(postcode_prefix__startswith="12345"[0])
,然后,当我得到的结果,做一个列表理解可以过滤他们正确,就像这样:
results = [r for r in results if "12345".startswith(r.postcode_prefix)]
在django中有更好的方法吗? 谢谢你, 法布里奇奥
前缀的长度是固定的还是有可变长度? – cyroxx 2012-08-10 15:47:03
可变长度:) – sfabriz 2012-08-10 16:22:22