【问题标题】:Django startswith unicodeDjango 以 unicode 开头
【发布时间】:2012-11-26 11:48:26
【问题描述】:

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

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

我正在使用 postgres。

【问题讨论】:

  • 你的方法是我会使用的。

标签: database django unicode


【解决方案1】:

django-unaccent 库的编写旨在提供您所需的功能。

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

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

【讨论】:

  • 谢谢,这是一个强大的解决方案,但是在我的情况下,数据库迁移不那么痛苦,我将使用计算列的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
相关资源
最近更新 更多