Make組ブログ

Python、Webサービスや製品開発、ライブラリー開発についてhirokikyが書きます

Django の FormSet で更新用のビュー作ろうとしてハマったことろ

Django の FormSet についてハマったメモ

ある更新用のビューに FormSet を使いたかった。更新用のビューなので、既存のオブジェクトがある場合は FormSet をそれに対して束縛してやる必要があった。

環境

Django==1.4.1

解法

下記ブログ参考に。

modelformset_factory を使えば FormSet に queryset が使えるので、これに束縛するオブジェクト (クエリセット) を与えてやれば良い

ハマったことろ

modelformset_factory ではなくて、 formset_factory を使っていた。具体的には以下のようにしていた。

>>> from django.forms.formsets import formset_factory
>>> from django.forms.models import modelform_factory
>>> from myapp.models import Animal
>>> AnimalForm = modelform_factory(Animal)
>>> AnimalFormSet = formset_factory(AnimalForm)
>>> animal_formset = AnimalFormSet()

この formset_factory を使った場合 queryset が無い。
queryset に類似する引数は見つけられていない。何かの拍子に見つかれば追々書く。
とにかく modelformset_factory を使えば解決。

おわりに

アドバイスくれた id:yuheiomori0718 さん++
ブログ記事残してくれた ian さん++