他のフィールドで選択されているフィールドに基づいて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で何を修正する必要がありますか? ありがとう!
私は誰もが休暇中ですか? :P – Kinwolf