2012-06-14 86 views
0

无法确定我做错了什么。当我发布我的表单时,有很多缺失的字段。它重新显示但不打印错误。下面是表,视图和模板在Django窗体显示中没有得到错误显示

我有一个模型形式:

class HotelOfferForm(forms.ModelForm): 
    """ 
    form for Ensemble personel to complete to make offer live 
    """ 
    class Meta: 
     model = Hoteloffer 
     widgets = { 
      'standard_Service': forms.CheckboxSelectMultiple(), 
      'leisure_Service': forms.CheckboxSelectMultiple(), 
      'dining_Service': forms.CheckboxSelectMultiple(), 
      'lto_start_date': SelectDateWidget(), 
      'lto_end_date': SelectDateWidget(), 
     } 

和一个视图:

def edit_hotel(request, hotel_id): 
    print 'in edit_hotel' 
    if request.method == 'POST': 
     print "in POST" 
     print hotel_id, type(hotel_id) 
     if int(hotel_id) != 0: 
      print 'got hotel_id', hotel_id 
      hotel = Hoteloffer.objects.get(pk=hotel_id) 
      f = HotelOfferForm(request.POST, instance=hotel) 
     else: 
      print 'no hotel id available' 
      f = HotelOfferForm(request.POST) 
     print "Is it valid?", f.is_valid() 
     if f.is_valid(): 
      hotel = f.save() 
      return redirect("/hotels/list_hotels/", context_instance=RequestContext(request)) 

    try: 
     hotel = Hoteloffer.objects.get(pk=hotel_id) 
     f = HotelOfferForm(instance=hotel) 
    except: 
     f = HotelOfferForm() 
    print "about to render", f.errors # ******* prints nothing??? 
    return render_to_response('hotels/hotel_form.html', {'f': f, 'title': hotel.title}, context_instance=RequestContext(request)) 

模板:

{% extends 'base.html' %} 
{% block title %}Ensemble Travel Group Offer Entry System: Hotel {{title}}{% endblock %} 
{% block content %} 
<!--{{ f.name }} {{f.errors}}--> 
<!-- am i here? --> 
<h2>{{ title }}</h2> 
{% if f.errors %} 
    <p style="color: red;"> 
     Please correct the error{{ f.errors|pluralize }} below. 
     {{ f.errors }} 
    </p> 
{% endif %} 

<form action="" method="post">{% csrf_token %} 
    <table> 
    {{ f.as_table }} 
    </table> 
<input type='submit' id='submit' name='submit' value='Submit' /> 
</form> 
{% endblock %}    

回答

2

当你的形式不及格is_valid你回落到这个代码:

try: 
    hotel = Hoteloffer.objects.get(pk=hotel_id) 
    f = HotelOfferForm(instance=hotel) 
except: 
    f = HotelOfferForm() 

如果你想展示的形式与它的它应该request.POST作为参数

我也建议寻找到基于类的Django的视图中返回的形式错误,尤其是更新视图会用这种很好地工作编辑视图