2

モデルの編集フォームを作成しようとしています。モデルの種類によって、ユーザーが使用できるフォームが異なるため、モデル フォームは使用しませんでした。(たとえば、フォームの 1 つには Tinymce ウィジェットがあり、もう 1 つにはありません。)

ModelFormモデルを使用してフォーム (ではない) の初期データを設定する方法はありますか?

次のことを試しましたが、エラーが発生しました。

b = get_object_or_404(Business, user=request.user)
form = f(initial = b)

fのサブクラスはどこですかforms.Form

私が得ているエラーはAttributeError: 'Business' object has no attribute 'get'

4

2 に答える 2

6

初期データは である必要がありますdict(または、少なくともdictDjango モデルにはない のようなインターフェイスが必要です)。

dict以下を使用して、モデルからを構築できdjango.forms.models.model_to_dictます。

from django.forms.models import model_to_dict
b_as_dict = model_to_dict(b)

これは、Django の組み込みModelFormクラスが初期データを設定するために使用するのと同じ関数ModelFormです。 .

于 2012-05-31T16:57:57.587 に答える