假设我有一个带有邮政编码字段的地址模型。我可以使用以下行查找邮政编码以“123”开头的地址:
Address.objects.filter(postcode__startswith="123")
现在,我需要以“其他方式”进行搜索。我有一个带有 postcode_prefix 字段的地址模型,我需要检索所有 postcode_prefix 是给定代码前缀的地址,例如“12345”。因此,如果在我的数据库中我有 2 个带有 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 中做到这一点?