1

ユーザーが「アドレス」フィールドからタブで移動した後、ビューへの ajax リクエストをトリガーするフォームがあります。郵便番号を取得し、ピックアップに同じ郵便番号を入力します。問題は、フォーム エラーがある場合、get_pickups ビューから生成した結果のドロップダウンが失われることです。フォームエラーでも結果を保持できるようにするにはどうすればよいですか

def get_pickups(request):   

    if request.is_ajax():   
        # Get available pickup dates based upon zip code
        zip = request.POST.get('zip',None)
        routes = Route.objects.filter(zip=zip).values_list('route',flat=True)       

        two_days_from_today = date.today() + relativedelta(days = +2)

        submitted_from = request.POST.get('template',None)
        if submitted_from == '/donate/':
            template = 'donate_form.html'
            results = PickupSchedule.objects.filter(route__in=routes,date__gt = two_days_from_today, current_count__lt=F('specials')).order_by('route','date')
        else:
            template = 'donate-external.html'
            results = PickupSchedule.objects.filter(route__in=routes,date__gt = two_days_from_today, current_count__lt=F('specials')).order_by('date')          

        return render_to_response(template,{ 'zip':zip, 'results':results}, context_instance=RequestContext(request))

jquery経由の私のajax呼び出し:

$.ajax({
        type: "POST",
        url:"/get_pickups/",
        data: {
        'zip': zip,
        'template':template
        },
        success: function(data){            

                results = $(data).find('#results').html()           
                $("#id_pickup_date").replaceWith("<span>" + results + "</span >");      
        },
        error: function(){
            alert("Error");
        }
4

1 に答える 1

1

私は2つのアプローチを考えることができます:

  1. そのドロップダウンの内容をPOSTに添付し、エラーが発生した場合は他のフィールドのデータと一緒に返します(欠点:サーバーコードの複雑さが増す)
  2. javascriptを使用して、ページの読み込み/再読み込み時にそのzipフィールドが空でないかどうかを確認します。空でない場合(エラーリターンなど)、そのドロップダウンのajaxルックアップを呼び出します(欠点:計算の重複)

私はあなたが最も熟練していると感じるソリューション(python / djangoまたはjavascript)を使用します

于 2012-10-12T01:24:21.567 に答える