django.db.models.expressions.F

id:MiCHiLUさんがtrunkにdjango.db.models.Fというのが増えてるとtwitterでつぶやいてたので、さっそく見てみた。
django/expressions.py at master · django/django · GitHub
Filters can reference fields on the model
フィルタでモデルのフィールドを参照できるとさ。今まではextraのwhereに頼っていたものがfilterでできるようになるので便利。
例えば、

>>> Entry.objects.extra(where=['created_at = updated_at'])

>>> from django.db.models import F
>>> Entry.objects.filter(created_at=F('updated_at'))

と書ける。Fは __add__ などのoperatorも実装されているのでFオブジェクト同士の足し算や掛け算も可能とのこと。
また、'__'を使ってリレーション先を参照することも可能。
同僚のイアンのところのほうが詳しい(英語だけど
http://www.ianlewis.org/en/f-ield-column-queries-in-django