2017-07-20 6 views
0

他のフィールドで選択されているフィールドに基づいてdjangoフォームにフィールドを設定したい。私はjavascriptで答えをたくさん読んだ(私はjavscriptで苦労しているので、私はexemplesに問題がある)、私はそれを動作させたが、最後のステップ(フィールド自体を更新する)はそうではない私はその部分でいくつかの助けが好きです。Django:前のフィールド値に基づいてフィールドに値を設定する - 最後のステップがないために

ここに2つのフィールドがあります。最初fieldthatは、クエリから移入されます、フォームが選択されると

merchandise = forms.ModelChoiceField(label='Merchandise', queryset=Merchandise.objects.all(), 
merch_price = forms.DecimalField(label='Price', min_value=0, max_value=800, 
            initial='0.00',decimal_places = 2, max_digits=10) 

に#merchという名前のdivに位置し、第2フィールド(DIV命名#price)を選択された商品に基づいて価格を表示しなければなりません。私は、Ajaxリクエストのためのビューを作成しました:

def check_item_price(request): 
if request.method == "GET": 
    item = request.GET.get('item', '0')#the zero as default doesn't seem to work. To verify 
    price = Merchandise.objects.get(id = item)  
return JsonResponse(price.item_price, safe=False)#is it safe to turn safe off? 

を、手動でURLを呼び出すURL

url(r'^_item_price', views.check_item_price, name='_item_price') 

は素晴らしい作品、それが

JSON形式で価格を返します。そして、ここではJavascriptをつまりHTML形式です。最初の部分は動作し、変更するとurlが呼び出され、jsonオブジェクトが返されますが、2番目の部分を更新する必要がある2番目の部分は機能しません。私はjavascriptの知識の欠如がおそらくここでは誤りであると認めます。私は例に基づいて多くのバリエーションを試しましたが、誰も私のために働いていませ

 <script type="text/javascript"> 
jQuery(document).ready(function() { 

    $('#merch').change(function() { 

     var item = $(this).find(':selected').val(); 


     $.getJSON('/classes/_item_price/',{item:item}, 
     function(data) { 
      $('#price').append("<option value=" + data.value + "></option>"); 
    }); 
    }); 
    }); 

</script> 

javascriptで何を修正する必要がありますか? ありがとう!

+0

私は誰もが休暇中ですか? :P – Kinwolf

答えて

0

私の頭の中で2ヶ月間マリネをつけた後、私はそれを元に戻って最終的に機能させました。ここに正しいコードは

jQuery(document).ready(function() { 
    $('#merch').change(function() { 

     var item = $(this).find(':selected').val(); 

     $.getJSON('/classes/_item_price/',{item:item}, 

      function(data) { 

       document.getElementById('id_merch_price').value=data; 

    }); 
    }); 
    }); 

</script> 

最初にIDは十分ではありませんでした。私はJavaScriptやjqueryに関する研究をしなくてはいけないと思っています。だから同じことをする方法があるかもしれません、私のようなカジュアルなコーダーを学ぶことはほとんど不可能です。

関連する問題