3

私はいくつかの Django を学んでいますが、現在 Forms に問題があります。私がやりたいのは、同じページに表示されるページにメッセージを残すことができるフォームを作成することです (ブログのコメント システムのように)。ドキュメントに従って、このようなクラスとModelFormを作成しました

class Recado(models.Model):
    recado = models.TextField()
    data = models.DateTimeField(auto_now_add=True)
    nome = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)

    def __unicode__(self):
        return self.recado

class RecadoForm(ModelForm):
    class Meta:
        model = Recado
        exclude = ('data',)

次に、私の見解は次のとおりです。

def index(request):
    RecadoForm = modelform_factory(Recado, exclude=('data'))
    form = RecadoForm()
    lista_recados = Recado.objects.order_by('-data')
    template = loader.get_template('recados/index.html')
    context = Context({'lista_recados': lista_recados,})
    return render_to_response("recados/index.html", { "form": form,}, context_instance=RequestContext(request))

そしてテンプレート:

<div class="conteudo-site conteudo-recados">
    <form method="post" action="salvar_recado">
        {% csrf_token %}            
        {{ form.as_p }}
        <br /><input class="button" type="submit" value="Deixar Recado" />
    </form>
    {% if lista_recados %}
        {% for recado in lista_recados %}
            <p>{{ recado.nome }}</p>
            <p>{{ recado.data }}</p>
            <p>{{ recado.recado }}</p>
            <br />
        {% endfor %}
    {% else %}
        <p>Ainda não existem recados. Deixe o seu :)</p>
    {% endif %}
</div>

これにより、ページにフォームが正しく生成されますが、送信ボタンをクリックしてもデータベースにデータが保存されず、何をすべきかわかりません。ビューでいくつかのことを試しましたが、何も機能しませんでした。

誰か助けてくれませんか?どうもありがとうございました。

4

2 に答える 2

0

Django 1.5 を使用している場合は、これを試してください

多分あなたの見解は次のようになるでしょう:

class RecadoFormView(FormView):
    model_class = RecadoForm
    template_name = 'recados/index.html'

    def valid_form(self, form):
        form.instance.save() # Or form.save()
        return super(RecadoFormView, self).valid_form(form)
于 2013-05-09T12:00:42.077 に答える