Django 表单错误时返回ajax选择字段
我有一个表单,在用户从“地址”字段中签出后触发对视图的ajax请求。它检索邮政编码,然后用相同的邮政编码填充皮卡。问题是,如果有任何表单错误,那么我从get_pickups视图生成的结果的下拉列表就会丢失。我如何保存它,以便即使在表单错误时也能保留结果Django 表单错误时返回ajax选择字段,django,django-forms,Django,Django Forms,我有一个表单,在用户从“地址”字段中签出后触发对视图的ajax请求。它检索邮政编码,然后用相同的邮政编码填充皮卡。问题是,如果有任何表单错误,那么我从get_pickups视图生成的结果的下拉列表就会丢失。我如何保存它,以便即使在表单错误时也能保留结果 def get_pickups(request): if request.is_ajax(): # Get available pickup dates based upon zip code
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");
}
我可以想出两种方法: 如果出现错误,请将该下拉列表的内容附加到帖子中,并将其与其他字段中的数据一起返回。缺点是:增加了服务器代码的复杂性 使用javascript检查页面加载/重新加载时zip字段是否为非空。如果它不是空的,例如错误返回,请调用ajax查找以查找下拉列表的缺点:重复计算
我会使用您认为最熟悉python/django或javascript的解决方案,我可以想到两种方法: 如果出现错误,请将该下拉列表的内容附加到帖子中,并将其与其他字段中的数据一起返回。缺点是:增加了服务器代码的复杂性 使用javascript检查页面加载/重新加载时zip字段是否为非空。如果它不是空的,例如错误返回,请调用ajax查找以查找下拉列表的缺点:重复计算
我会使用你认为最熟练的python/django或javascript解决方案,你能举一个表单错误的例子吗?e、 g.邮政编码错误?这不一定是邮政编码错误,但如果表单上存在任何其他错误,例如未输入必填字段。您能否给出表单错误的示例?e、 g.邮政编码错误?这不一定是邮政编码错误,但如果表单上存在任何其他错误,例如未输入必填字段。提交问题后,我意识到我可以用解决方案2中提到的方法来完成。我更愿意在python/django中这样做,但我只是在页面加载时检查字段长度是否大于零,然后进行相同的ajax调用。谢谢提交我的问题后,我意识到我可以用你在解决方案2中提到的方法来做。我更愿意在python/django中这样做,但我只是在页面加载时检查字段长度是否大于零,然后进行相同的ajax调用。谢谢