カラムに最大/最小値を持つレコードに基づいてDjangoクエリをフィルタリングする簡単な方法はありますか?私は本質的にthesequestionsを求めていますが、DjangoのORMの特定のコンテキストでです。最大カラム値を持つレコードによるDjangoクエリのフィルタリング
私は全員の電話番号の履歴値を保存するように設計されたモデルがあります。レコードを持つ
class Person(models.Model):
name = models.CharField(max_length=100)
phone = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
:
Person(name='Jim',phone='123-456-9870', created=datetime(2005,1,2,4,2))
Person(name='Jim',phone='329-802-9870', created=datetime(2006,9,2,7,8))
Person(name='Sue',phone='324-345-3450', created=datetime(2008,7,4,6,1))
は今、私は皆の最新の電話番号を探していましたと言います。 SQLで
、私は通常の最大値を計算するためにサブクエリを使用する必要があるだろう:
SELECT p1.name, p1.phone, p1.created
FROM person_person p1, (
SELECT name, MAX(created) AS max_created
FROM person_person
GROUP BY name
) AS p2
WHERE p1.name = p2.name AND p1.created = p2.max_created
はこれを簡素化することができジャンゴのいずれかのメカニズムがありますか?
私はバックエンドでPostgreSQLを使用していますので、PostgreSQL固有の機能に依存する考えや解決策があれば助かります。
これは、djangoでは、生のクエリsqlを使用しない限り、探しているものを実行できないようです。 [this](https://docs.djangoproject.com/ja/dev/ref/models/querysets/#distinct)をチェックしてください。現時点では、作成されたorder_by( 'created')をクエリのselectに追加するので、distinctは何も行いません。 – Hassek