PostgreSQLは.distint('field name')
のデータベースクエリを持つことができますが、Sqliteはありません。したがって、ユーザーがsqlite3を使用している場合はより単純なクエリを実行するtry/exceptブロックを作成しました。ブロックを除いてNotImplementedErrorを実行していないブロック
raise NotImplementedError('DISTINCT ON fields is not supported by this database backend')
NotImplementedError: DISTINCT ON fields is not supported by this database backend
はあなたの操作を行います。ユーザーは、私は除いて、ブロック内の単純なクエリが実行され得ることを期待するSQLiteにも使用しているのであれば、しかし、例外がスローされ、簡単なクエリが実行されることは決してありません
try:
qs = qs.filter(tag__istartswith=self.q).order_by('tag').distinct('tag')
except NotImplementedError:
qs = qs.filter(tag__istartswith=self.q)
なぜこれが期待どおりに動いていないのか考えてみてください。
おかげ
ありがとうございます。私は小さな変更を加えなければならなかったが、それは機能する。最初の(試行)qsクエリが失敗すると、それによって、最初のqs試行が変更されたqsのように、2番目の(例外)qが失敗します。したがって、私はこのようなことをする必要があります: 'try:\ n qa = qs \ n qs = qs.filter(tag__istartswith = self.q).order_by( 'tag')。distinct( 'tag')\ n dummy_boolean_var = qs.exists()\ n (NotImplementedErrorを除く):\ n qs = qa \ n qs = qs.filter(tag__istartswith = self.q) '。申し訳ありませんが、それを改善する方法がわからない不正なフォーマットです。 –
@TomBrockアップデートをありがとう、私は私の答えを編集し、将来の訪問者を助けるためにあなたの作業バージョンを含めた。 – Selcuk