私の 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}