假设我有一个带有邮政编码字段的地址模型.我可以使用此行查找以"123"开头的邮政编码的地址:
Address.objects.filter(postcode__startswith="123")
Run Code Online (Sandbox Code Playgroud)
现在,我需要搜索"其他方式".我有一个带有postcode_prefix字段的地址模型,我需要检索postcode_prefix是给定代码前缀的所有地址,如"12345".因此,如果在我的数据库中我有2个地址使用postcode_prefix ="123"和"234",则只返回第一个地址.
就像是:
Address.objects.filter("12345".startswith(postcode_prefix))
Run Code Online (Sandbox Code Playgroud)
问题是这不起作用.我能想出的唯一解决方案是对第一个char执行过滤,例如:
Address.objects.filter(postcode_prefix__startswith="12345"[0])
Run Code Online (Sandbox Code Playgroud)
然后,当我得到结果时,制作一个列表理解,正确过滤它们,如下所示:
results = [r for r in results if "12345".startswith(r.postcode_prefix)]
Run Code Online (Sandbox Code Playgroud)
在django有更好的方法吗?谢谢你,法布里奇奥