Djangoはdistinctを使用してDISTINCTONフィールドを報告しますが、このデータベースバックエンドではサポートされていません
Django Uses Distinct Report Distinct Fields Is Not Supported This Database Backend
前に書かれた
最近、Djangoでdistinctを使用して再利用するデータベースクエリを実行し、メソッドのソースコードを直接表示しました。
def distinct(self, *field_names): ''' Return a new QuerySet instance that will select only distinct results. ''' assert self.query.can_filter(), 'Cannot create distinct fields once a slice has been taken.' obj = self._chain() obj.query.add_distinct_fields(*field_names) return obj
メソッドが1つ以上のfield_namesパラメーターを受け入れることがわかりました。これが、データベースで重複排除する必要があるフィールドの名前であることを知りたくありません。
エラー表示
だから、私は当然のことながら小さな顔をやり直しました:
Category.objects.filter(article__is_origin=True,article__is_recommend=True).distinct('name'),
最初に次のコードを説明し、記事分類テーブルをクエリしますis_origin = True
そしてis_recommend=True
分類してから、フィルターで除外しますname
分類を繰り返した後に戻ります。
そしてエラーデビュー:
このエラーを見て、最初の反応は当然、Djangoのドキュメントを確認することです。
djangoのオンラインドキュメントでは、個別の接続について次のように説明しています。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct。
特定のドキュメントには行きません。解決策を直接言う
エラー解決
Mysql
データベースを使用する場合は、 Distinct()にはパラメーターがありません。パラメーターは、値で記述する必要があります。 、次のようにコードを変更します。
Category.objects.filter(article__is_origin=True,article__is_recommend=True).values('name').distinct(),
問題が解決しました !!!