是否可以获得Author.objects.filter(surname__istartswith='Z')
同样以“Ž”、“Ź”等开头的返回结果?
我想到的唯一解决方案是surname
使用 unicode 音译变平并将其保存为surname_flat
db.xml 。然后Author.objects.filter(surname_flat__istartswith='Z')
会工作,但它需要数据库迁移。
我正在使用postgres。
已编写django-unaccent库以提供您需要的功能。
但是,这样做会使您的解决方案依赖于数据库,如果您决定将来移动数据库引擎,这可能是一个问题。
您添加额外计算列的解决方案是我将使用的解决方案,因为这使您的代码与数据库无关。您还可以更有效地索引您的列。因为 django-unaccent 库使用基于数据库功能的搜索,所以每次使用它都会对您的数据进行列扫描。