Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

フォームにすでに入力されている値をテストする (オブジェクト更新用のビューをテスト)

オブジェクト更新用のビューのテストをするときに、フォームにすでに入力されている値をテスト
したいことがある。

>>> response = self.client.get('/update/1/')

response オブジェクトから、いかにフォームの初期値を取るかという問題。

解法

フォームを form としてコンテキストに与えた場合は以下のようにすると
フォームオブジェクトが取れる。

>>> response.context['form']

form のに text というラベルがあった場合、初期値を取るには以下のようにする。

>>> response.context['form'].initial['text']

フォームセットの場合は、 formset をコンテキストに与えたとして以下のようにすると、
束縛したクエリセットがとれる。

>>> response.context['formset'].queryset

コンテキストに与えたものは response.context から取れるようなので、テストに使いやすい。