1. ホーム
  2. ジャンゴ

[解決済み】Djangoのvalues_listとvaluesの比較

2022-04-04 11:51:53

質問

Djangoでは、以下の2つは何が違うのでしょうか。

Article.objects.values_list('comment_id', flat=True).distinct()

Article.objects.values('comment_id').distinct()

私の目標は、各コメントの下にあるユニークなコメント ID のリストを取得することです。 Article . ドキュメントを読みました(そして実際に両方のアプローチを使いました)。結果はあからさまに似ているようです。

どのように解決するのですか?

その values() メソッドは、ディクショナリを含むQuerySetを返します。

<QuerySet [{'comment_id': 1}, {'comment_id': 2}]>

values_list() メソッドは、タプルを含むQuerySetを返します。

<QuerySet [(1,), (2,)]>

を使用している場合 values_list() を1つのフィールドで使用する場合は flat=True を使用すると、1タプルの代わりに単一値のQuerySetを返します。

<QuerySet [1, 2]>