2012-11-26 69 views
2

是否有可能得到Author.objects.filter(surname__istartswith='Z')返回的結果也以'Ž','Ź'等字符開頭?Django以unicode開頭

我想到的唯一解決方案是將surname與unicode音譯合併,並將其保存爲db中的surname_flat。然後Author.objects.filter(surname_flat__istartswith='Z')可以工作,但它需要數據庫遷移。

我正在使用postgres。

+0

您的方法是我會使用的方法。 –

回答

1

已編寫django-unaccent庫以提供您所需的功能。

通過這樣做,您正在使您的解決方案與數據庫相關,如果您決定將來移動數據庫引擎,這可能會成爲問題。

您的解決方案添加一個額外的計算列是我會使用的,因爲這會保持您的代碼獨立於數據庫。您也可以更有效地索引列。由於django-unaccent庫使用基於數據庫功能的搜索,因此每次使用它時都會對數據進行列掃描。

+0

謝謝,這是一個強大的解決方案,但是對於我而言,數據庫遷移不那麼痛苦,我將使用計算列方法。 – zahory