3月 18
このエントリをはてなブックマークに登録 Yahoo!ブックマークに登録

例えば

class Person(models.Model):
name = models.CharField(max_length=100)
nickname= models.CharField(max_length=100)

みたいなモデルがあって、「名前とニックネームがおんなじ人を抽出したい」っていうケースがあるとします。

_person = Person.objects.filter(name=nickname)

はNGですね、エラーがでます。「nicknameは宣言されてません」となります。そこで、

from django.db.models import F

_person = Person.objects.filter(name=F(‘nickname’))

と書きます。フィールドを値として展開してくれるみたいですね。site-packages\django\db\models\expressions.pyにソースもあるので、きちんと調べればいい感じに使えそうです。

Python2.5、Django1.1.1でのお話でした。

関連性のあるエントリ:

  1. Djangoのmodelで自分自身に対するリレーション(再帰的なリレーション)を張る
  2. Djangoでパスワード等の暗号化保存を隠蔽する
  3. Djangoのformでカスタムバリデーションをする方法
  4. Pythonでバーコードを作成する
  5. Djangoで集計クエリ(1.1以降でannotateを使用)

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
preload preload preload