0

无法弄清楚我做错了什么。当我发布我的表格时,有很多缺失的字段。它重新显示但不打印错误。下面是表单、视图和模板

我有一个模型形式:

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 %}            
4

1 回答 1

2

当您的表单未通过 is_valid 时,您将回退到此代码:

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

如果您想显示带有错误的表单,则应该将表单request.POST作为参数返回

我还建议查看 Django 的基于类的视图,尤其是 UpdateView 可以很好地与这种编辑视图配合使用

于 2012-06-14T14:58:16.090 回答