コメントモデルの任意のフィールド上)(異なる実行すると、常にdjangoコメントフレームワーク:distinct()は機能しませんか?
Comment.objects.values( 'ユーザ')の別個の()
[{ 'ユーザ'、すべてのレコードが返されます。1 {'user':1}、{'user':1}、{'user':0}、{'user':0}、{'user':0} 、{ 'ユーザ':1}、{ 'ユーザ':1}]
Comment.objects.values( 'IP_ADDRESS')異なる()
[{ 'IP_ADDRESS':u'127.0.0.1 '}、{' ip_address ':u'192.168.0.180'}、 {'ip_address':u'192.168.0.180 '}、{' ip_address ':u'192.168.0.180'}、 {'ip_address':u'192.168.0。 {'ip_address':u'192.168.0.180 '}、{' ip_address ':u'192.168.0.180'}、 {'ip_address': 'ip_address':u'192.168.0.180 '}、 u'192.168.0.180 '}]
どうしてですか?これを回避する方法はありますか?ありがとう!
ps:distinct()は、テスト中にカスタムモデルのさまざまなタイプのフィールドで非常によく動作します。 Commentsフレームワークについて特別なことがありますか?いくつかの読書と組み合わせて、この質問に答えるという結論 おかげでみんなの
ビットは、私は次のような結論を得る:
- 値を()最終 SQLのSELECT部分でルックアップフィールドに影響を与える(」values() takes optional positional arguments, *fields, which specify field names to which the SELECT should be limited ")
- order_by()は、そのパラメータをSELECT部分にも追加します。このように見えるようにSQLを結果となるルックアップで()の異なる使用
:
DISTINCT SELECT [fields1、fields2を、fields3] FROM ... WHERE ...
フィールドの値がすべて一緒にレコードが一意であるかどうかを決定します。フィールドは、ルックアップのvalues()関数またはorder_by()関数から来る場合があります。
Djangoのコメントは、このように全体の問題を作成し、デフォルトでは非表示ORDER_BYパラメータを持っています。 qを返すと、同じ問題が発生する可能性があります。
- 解決方法は、 の末尾に空のorder_by()を追加して、デフォルトのorder_byを削除します。
場合は、両方のあなたのソリューションは、すべての –
@SimonKagwiでは動作しません。そして、彼らは何をすべきか戻りますか? – DrTyrsa
こんにちはDrTyrsa!私はdjango 1.3を使用しており、distinct()のパラメータはこのバージョンでは説明されていません。 2番目のコマンドはコメントモデルでは機能しませんが、カスタムモデルではうまくいきます(PSで述べたようなものです)。 しかし、なぜ '値'は '明確な'動作に影響を与えるべきではありませんか? djangoにどの列の値をグループ化するべきかを伝えない場合、どのようにレコードを一意に扱うかをどのように知ることができますか? –