[解決済み] djangoでDISTINCT個々の列を選択しますか?
質問
Django で " ではないクエリを実行する方法があるのかどうか、気になるところです。
SELECT * FROM...
"の下にあります。私は、".をしようとしています。
SELECT DISTINCT columnName FROM ...
の代わりに、" を使用します。
具体的には以下のようなモデルを持っています。
class ProductOrder(models.Model):
Product = models.CharField(max_length=20, promary_key=True)
Category = models.CharField(max_length=30)
Rank = models.IntegerField()
ここで
Rank
の中のランクです。
Category
. すべてのカテゴリーを反復して、そのカテゴリー内の各ランクに対して何らかの操作を行えるようにしたいのです。
まず、システム内の全カテゴリーのリストを取得し、そのカテゴリー内の全商品を照会し、全カテゴリーが処理されるまで繰り返すようにしたい。
生のSQLは避けたいのですが、どうしてもというならそれでもいいでしょう。でも、Django/Pythonで生のSQLをコーディングしたことはないんですけどね。
どのように解決するのですか?
データベースから個別のカラム名のリストを取得する方法のひとつは
distinct()
と合わせて
values()
.
あなたの場合、以下のようにして、個別のカテゴリー名を取得することができます。
q = ProductOrder.objects.values('Category').distinct()
print q.query # See for yourself.
# The query would look something like
# SELECT DISTINCT "app_productorder"."category" FROM "app_productorder"
ここで覚えておくべきことがいくつかあります。まず、これは
ValuesQuerySet
とは動作が異なります。
QuerySet
. の最初の要素にアクセスすると
q
(上) では
辞書
のインスタンスではありません。
ProductOrder
.
第二に、それは
注意書き
を使用することについて、ドキュメントに記載されています。
distinct()
. 上記の例では動作しますが、すべての
distinct()
と
values()
はしないかもしれません。
PS : を使用するのは良いアイデアです。 小文字の名前 をモデル内のフィールドに追加します。あなたの場合、これは以下のようにモデルを書き換えることを意味します。
class ProductOrder(models.Model):
product = models.CharField(max_length=20, primary_key=True)
category = models.CharField(max_length=30)
rank = models.IntegerField()
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Djangoで1ページで複数のフォームを扱う適切な方法
-
[解決済み】Djangoのクエリ - idとpkの比較
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み] テーブルのフィールドから異なる値を選択する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Django: そのようなテーブルがない: django_session
-
[解決済み] Django における cleaned_data の用途は?
-
[解決済み] boto.exception.S3ResponseError.S3ResponseError。S3ResponseError: 403 Forbidden
-
django.db.utils.OperationalError の解決策です。(2003, "Can't connect to MySQL server") というエラーが発生します。
-
[解決済み】DEBUG = Falseに設定すると500エラーになる。
-
[解決済み】Djangoで一対多の関係を表現する方法は?
-
[解決済み】Django Southでの後方移行について
-
[解決済み】djangoでResponse Forbiddenを発生させるには?
-
[解決済み】reverse()とは何ですか?)
-
[解決済み] [Djangoで「一括更新」する方法とは?