2012-02-10 9 views
-1

これは簡単な質問だと思いますが、これが可能であるかどうかにはっきりとした答えは見つかりません。Djangoテンプレートのフォームフィールドとしてのモデルフィールド

レンダリング時にテンプレートに渡されるModelオブジェクトがあります。ほとんどのModelフィールドを使って値を表示していますが、そのうちのいくつかをフォームフィールド(ModelFormsでレンダリングされたようなそれぞれのHTML要素)で表示する必要があります。ここではModelFormクラスの使用を避けることができ、単にモデルのフィールドを使用してテンプレートから直接フォームフィールドとしてレンダリングできますか?

例:上記のモデル例をもとに、テンプレートで今

class MyModel(models.Model): 
    month = models.PositiveIntegerField(_('Month'), choices=MONTH_CHOICES) 
    year = models.PositiveIntegerField(_('Year')) 

は、私が選択した電流値とドロップダウンリストとして値ではなく、月と年表示したいですか?

任意のポインタが評価されました!

ユースケース:

あなたはクエリセットをレンダリングする場合のような一般的なlist_viewを想像してみてください。あなたが持っているものは反復ごとにオブジェクトがありますが、リストビューでは少数のオブジェクト属性をすばやく編集できるようにして、完全な編集モード(単純なAJAXなど)にならないようにします。

+1

なぜ 'ModelForm'の使用を避けたいですか?これは正しいツールです。 – DrTyrsa

+0

私は、なぜ、どこでこれが役に立つのか、いくつかの洞察を与えておくべきだったと思います。 クエリーセットをレンダリングする場合の一般的なlist_viewのようなケースを想像してみてください。ここでは、反復ごとにオブジェクトがありますが、リストビューでは、フル編集モードに移行するのを避けるために、少数のオブジェクト属性をすばやく編集できるようにしたいと考えています。これが私のニーズを明確にすることを願っています。 – user1039384

+2

modelfomsのリストはここの解決策です。モデル自体に '{{form.instance}} 'でアクセスすることができます – DrTyrsa

答えて

0

コメントで説明されているように、これは不可能です。モデルとそのフィールドは、フォーム、つまり、どのようなフォームであるのか、そしてモデルフォームがあるのか​​を知らない。

これを行う正しい方法は、モデルフォームをモデルフォームで囲む​​ことです。モデルフォームをモデルフォームで囲む​​ことです。継承を使用して非フォームフィールドで必要な操作を行うことができます。

テンプレートでモデルフォームを作成するということは、djangoでフォームを処理する場所がどこにもないことを意味します。どうやらあなたは何らかの種類のajaxインターフェイスとインターフェイスしたいと思うので、おそらくこれはあなたにとって問題ではありませんが、いずれにしても、の方が単にビューのmodelformsを作成するよりも簡単には見えません。

関連する問題