2

是否可以获得Author.objects.filter(surname__istartswith='Z')同样以“Ž”、“Ź”等开头的返回结果?

我想到的唯一解决方案是surname使用 unicode 音译变平并将其保存为surname_flatdb.xml 。然后Author.objects.filter(surname_flat__istartswith='Z')会工作,但它需要数据库迁移。

我正在使用postgres。

4

1 回答 1

1

已编写django-unaccent库以提供您需要的功能。

但是,这样做会使您的解决方案依赖于数据库,如果您决定将来移动数据库引擎,这可能是一个问题。

您添加额外计算列的解决方案是我将使用的解决方案,因为这使您的代码与数据库无关。您还可以更有效地索引您的列。因为 django-unaccent 库使用基于数据库功能的搜索,所以每次使用它都会对您的数据进行列扫描。

于 2012-11-26T12:02:05.453 回答