0

私の django フォームでは、何らかのタイプの ajax/jquery リクエストを作成して、ユーザーが国として「米国」を選択した場合、州フィールドが自動的にすべての州 (choices= STATE_CHOICES) のドロップダウンに変わるようにしたいと考えています。Django内でこれを達成するにはどうすればよいですか? 検索結果に DAJAX が表示されましたが、これを行うための非常に簡単な方法があるはずなのでためらっています。前もって感謝します。

アップデート:

これのいくつかは ajax で行うことができました。ユーザーが国フィールドからフォーカスを失うと、そのフィールドのデータが対応するビューに送信されます。

    //JQUERY CODE
$("#id_country").focusout(function()
    {
        var country = $(this).attr('value');

        $.ajax({
            type:'POST',
            URL: '/accounts/register/',
            data: {
                country: $(this).attr('value')                    
            }
            });

    });`  

これは、送信先のビューです。それが ajax 呼び出しであることを決して認識しません。もちろん、ユーザーがフォームを送信しない限り、常にelseステートメントに分類されます。

from django.contrib.localflavor.us.us_states import STATE_CHOICES

def register(request):
form = RegistrationForm()
form_pref = UserInfoForm(request.POST)

if request.method == 'POST':
    form = RegistrationForm(request.POST)     
    if form.is_valid():   
        form_pref = UserInfoForm(request.POST, instance=UserInfo())            
        if form_pref.is_valid():
            new_user = form.save()                
            user=UserInfo.objects.create(user_id=new_user.id)            
            form_pref = UserInfoForm(request.POST, instance = user)  
            form_pref.save()   
    if form_pref.is_valid():
        form_pref.save(commit=False)

if request.is_ajax():
   ajax= "AJAX"
   country = request.POST.get('choices')  
    # I tested out in the shell and this line below changed the choices for me           
   form_pref.fields['state_province']._set_choices(STATE_CHOICES)   

else:

    form = RegistrationForm()
    form_pref = UserInfoForm()       
    country = "test"
 forms = (form, form_pref)

return render_to_response('register_form.html', {'form':form,'form_pref': form_pref,'forms':forms, 'ajax':ajax, 'country':country}
4

1 に答える 1

0

その AJAX 呼び出しの post メソッドを呼び出しています... request.is_ajax() は、if request.method == "POST" ステートメント内の if...else ステートメントである必要があります。

于 2015-06-17T14:46:28.863 に答える