ForeignKeyのメンバーを取ってこれる件

ForeignKeyのリレーションはたいへん

たとえばこんな models.py があるとする

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

class Hoge(models.Model):
    hoge = models.CharField(max_length=100)
    moge = models.ForeignKey(User)

こういうときに HogeModel をつかっているときに UserModel の name を更新したいとか扱いたいとかある。そういうときは

# Model の名前は小文字にするので user
# __name でリレーションをひっぱってくる
hoges = Hoge.objects.filter(user__name='hoge')
# name を変更する
hoges.update(name='mogemoge')

とするわけだ。要は user__name の部分を知らなくてハマってたという話。この例だと name を文字列で置換なんてあんまりしないと思うけど、たとえばなんちゃら id とかを一括で更新したいとかするときは便利
つーか公式ドキュメント嫁やってはなしでしたネ!しかし正直若干見づらいょ
参考::クエリを生成する — Django v1.0 documentation

広告を非表示にする