2

私は次のモデルとインスタンスを持っています:

class Bashable(models.Model):
    name = models.CharField(max_length=100)

>>> foo = Bashable.objects.create(name=u"piñata")

今、私はオブジェクトを検索できるようにしたいのですが、ユニコードではなくアスキー文字を使用して、次のようなものを使用します:

>>> Bashable.objects.filter(name__lookslike="pinata")

データベース内のUnicode文字にASCIIスタンドインを使用して、この種の近似文字列マッチングを行う方法はDjangoにありますか?

これは関連する質問ですが、Appleのコアデータについてです。

4

2 に答える 2

1

この質問への最初の答えstrip_accentsは、Python関数である関数を使用して目的を達成する方法を示しています。技術的にはDjangoの一部ではありませんが、Pythonに組み込まれています。

于 2010-03-19T20:14:00.280 に答える
1

最初の検索が失敗した場合は、「アクセントのない」名前のリストを検索してみてください。これは、Pythonに簡単に変換できるphp remove_accents関数です。remove_accents()

query = u"pinata"
r = Bashable.objects.filter(name=query)
if not r:
    accented = Bashable.objects.values('id', 'name')
    match_ids = [ obj['id'] for obj in accented 
                                if query in remove_accents(obj['name']) ]
    r = Blog.objects.in_bulk(match_ids)
return r

そして、Pythonでのあいまい文字列マッチングに関するstackoverflowエントリは次のとおりです:#682367

于 2010-03-19T20:14:39.260 に答える