是否有可能得到Author.objects.filter(surname__istartswith='Z')
返回的結果也以'Ž','Ź'等字符開頭?Django以unicode開頭
我想到的唯一解決方案是將surname
與unicode音譯合併,並將其保存爲db中的surname_flat
。然後Author.objects.filter(surname_flat__istartswith='Z')
可以工作,但它需要數據庫遷移。
我正在使用postgres。
是否有可能得到Author.objects.filter(surname__istartswith='Z')
返回的結果也以'Ž','Ź'等字符開頭?Django以unicode開頭
我想到的唯一解決方案是將surname
與unicode音譯合併,並將其保存爲db中的surname_flat
。然後Author.objects.filter(surname_flat__istartswith='Z')
可以工作,但它需要數據庫遷移。
我正在使用postgres。
已編寫django-unaccent庫以提供您所需的功能。
通過這樣做,您正在使您的解決方案與數據庫相關,如果您決定將來移動數據庫引擎,這可能會成爲問題。
您的解決方案添加一個額外的計算列是我會使用的,因爲這會保持您的代碼獨立於數據庫。您也可以更有效地索引列。由於django-unaccent庫使用基於數據庫功能的搜索,因此每次使用它時都會對數據進行列掃描。
謝謝,這是一個強大的解決方案,但是對於我而言,數據庫遷移不那麼痛苦,我將使用計算列方法。 – zahory
您的方法是我會使用的方法。 –