Djangoの使用個別の报错:フィールドON DISTINCTは、このデータベースバックエンドでサポートされていません

特定のエラーメッセージは次のとおりです。django.db.utils.NotSupportedError:フィールドON DISTINCTこのデータベースのバックエンドでサポートされていません

ただ、再クエリに行うには明確な方法を使用して、重いmysqlデータベースの検索に遭遇し、その結果は、このエラーが発生しました。明確なソースを見てください:

1  デフ明確な(自己、* FIELD_NAMES):
 2      「」「
3      。リターンだけ明確な結果を選択する新しいクエリセットのインスタンス
 4      『』」
5      アサートself.query.can_filter()、\
 6は         、「一度明確なフィールドを作成できませんスライスが取られている。
7      OBJ = self._chain()
 8      obj.query.add_distinct_fields(* FIELD_NAMES)
 9      リターン OBJを

明確なリターンにクエリの新しいセットを使用し、それは重量の目的を達成するために、再現性のある結果が表示されません。私たちは、それが1つまたは複数のFIELD_NAMESパラメータ、つまり、各フィールド名に許容可能であることがわかります。

私は間違った文言を書いた:u.objects.all()DISTINCT( 'アドレス')。

 これは間違ってのレポートです。現在のデータベースをサポートしていない明確な説明に表示される指示に従います。

:私たちは、このフィールドQuguanネットワーク記述を見ることができますhttps://docs.djangoproject.com/en/2.2/ref/models/querysets/#distinct

上記のこの誤った文言と呼ば公式ウェブサイトは、MySQLのは、指定することはできません明確な()フィールドでのサポートにpostgresqlを、サポートされていません。

エラー解決

これを行うことはできません、我々は中に入るのが好きではないデータ値またはvalues_listを書くことができます。

クエリは次のよう:

u.objects.filter(USER_ID = 1).values(' アドレス'" signer_name "' signer_mobile ').distinct()

出力:

<クエリセットその[{ ' アドレス'' 188号ブルー国際ビル'' signer_name '' ADMIN '' signer_mobile '' 1888888888 ' }、{ ' アドレス'' プレインズロード188 '' signer_name '' ' ' signer_mobile '' 2222222222 ' }、{ 'アドレス"' 南門通り、14 '' signer_name '' 劉Yuchen '' signer_mobile '' 3333333333 ' }、{ ' アドレス'' 廬山南路、山麓の扉'' signer_name '' 湖南大学'' signer_mobile '' 888888888 ' }、{ ' アドレス''安徽Jinzhai号線96 '' Signer_name '' 中国科学技術大学'' signer_mobile '' 666 666 666 ' }]>

SQLステートメントに対応します:

1  SELECT  DISTINCTアドレス、signer_name、signer_mobile FROM user_operation_useraddress WHERE  USER_ID = 1 ;     // の再照会
 2  
3  SELECT  COUNT*)繰り返しAS、アドレス、signer_name、signer_mobile FROM user_operation_useraddress GROUP  BYアドレス、signer_name、signer_mobile;     // 重複排除そして、クエリのフィールドの統計情報の数
 4  
5  SELECT  COUNT*AS signer_mobile繰り返し、住所、signer_name、FROMuser_operation_useraddress GROUPを BY signer_mobile、住所、signer_name HAVING繰り返し>  1 ;     //フィールドのレコード数よりも大きい場合、クエリ直します

これらは、MySQLの環境下でDjangoの重複排除クエリです。

おすすめ

転載: www.cnblogs.com/cpl9412290130/p/11777633.html