2

私はDjangoを初めて使用し、ModelFormを使用してデータを保存しようとしています。テンプレート「Vlozit」にはModelFormがあり、送信時にデータをDBに保存し、実際にDBからデータをロードして出力を一覧表示する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()

ModelFormは次のとおりです。

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

Timmy がコメントで述べているように、フォームが有効でないケースをキャッチできません。テンプレートにエラーが表示されないだけでなく、form.is_valid()False の場合はテンプレートが再表示されません。ビューの最後の行を 1 インデント レベル戻し{{ form.errors }}て、テンプレートに追加します。

于 2012-10-24T09:46:59.077 に答える