2

他の 2 つのフィールドから合計を計算フィールドにしたいのですが、それぞれのデータを取得する方法がわかりません。(私は何の喜びもなく .value を試しました)

Class TestForm(ModelForm):

    def __init__(self, *args, **kwargs):
       super(TestForm, self).__init__(*args, **kwargs)        
       self.fields['total_price'].initial = self.fields['price'].??? * self.fields['quantity'].???
4

2 に答える 2

3

バインドされたフォームを扱っていると仮定すると**kwargs['instance']、Model インスタンスを取得するために使用できます。

したがって、あなたの__init__方法は次のようになります-

  def __init__(self, *args, **kwargs):
       super(TestForm, self).__init__(*args, **kwargs)  
       instance = kwargs['instance']
       self.fields['total_price'].initial = instance.price * instance.quantity

バインドされたフォームを扱っていない場合は、初期値を取得できますself.fields['price'].initial

于 2012-12-17T17:43:28.627 に答える
0

ビューでそれを行うオプションもあります.....

昔ながらの方法....

しかし、それはモデルフォームではありません...

だからエイダンの答えはより良いですが、もしあなたが本当にカスタムなものをしたいのなら...昔ながらの方法

if request.method == 'POST': # If the form has been submitted...
    form = TestForm(request.POST) # A form bound to the POST data
    if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            whatever = form.cleaned_data['whatever']
            #and you can update the data and make the form with the new data
            data = {'whatever': whatever,'etc.': etc}
            form=TestForm(data)

else:
    # An unbound form
    form = TestForm(initial={'whatever': whatever,'etc.': etc})
return render_to_response(template,{'form':forms},context_instance=RequestContext(request))
于 2012-12-17T18:20:38.990 に答える