2

我是 Django 新手,我正在尝试使用 ModelForm 保存数据。模板“Vlozit”有一个 ModelForm,提交后,我希望将数据保存在数据库中,并重定向到实际从数据库加载数据并列出输出的 base.html。问题是一切正常,但数据未保存。请帮我找到我所缺少的。谢谢你。

这是模型:

class Customer(models.Model):
    Name = models.CharField(max_length=30)
    Description = models.CharField(max_length=150)
    Creation_Date = models.DateField(default=datetime.now)
    Active = models.BooleanField(default=False)

def __unicode__(self):
    return self.Name

Customers = models.Manager()

这是模型表单:

class CustomerForm(forms.ModelForm):
    Description = forms.CharField(widget=forms.Textarea)

    class Meta:
        model = Customer

这是视图:

def vlozit(request):
    if request.method == 'POST':
        form = CustomerForm(request.POST, instance=Customer)
        if form.is_valid():
            form.save(True) 
            return HttpResponseRedirect(reverse('Base.html'))
    else:
        form = CustomerForm()
        return render_to_response("Vlozit.html", {'form': form}, context_instance = RequestContext(request))

这是模板“Vlozit”:

{% extends "base.html" %}

{% block head %}
    {{ form.media }}
    <script>
        $(function() {
            $( "#id_Creation_Date" ).datepicker();
        });
    </script>
{% endblock %}

{% block title %}{{block.super}} - Vlozit{% endblock %}
{% block content %}
<div id="content">
    <form method="POST" action="{% url url_home %}">
    {% csrf_token %}
        <table>
            <tr>
                <td>Name</td>
                <td>{{ form.Name }}</td>
            </tr>
            <tr>
                <td>Description</td>
                <td>{{ form.Description }}</td>
            </tr>
            <tr>
                <td>Creation Date</td>
                <td>{{ form.Creation_Date }}</td>
            </tr>
            <tr>
                <td>Active</td>
                <td>{{ form.Active }}</td>
            </tr>
        </table>
        <input type="submit" value="Vlozit">
    </form>
</div>
{% endblock content %}
4

1 回答 1

3

正如蒂米在评论中所说,您没有发现表格无效的情况。form.is_valid()您不仅不会在模板中显示错误,而且如果为 False ,您甚至不会重新显示模板。将视图的最后一行移回一个缩进级别,并添加{{ form.errors }}到模板中。

于 2012-10-24T09:46:59.077 回答