2013-05-09 78 views
2

我正在學習一些Django,現在我對Forms有困難。我想要做的是創建一個讓人們在頁面上留言的表單,該表單將顯示在同一頁面中(就像博客評論系統一樣)。我創建一個類,像這樣的ModelForm,文檔以下如何使用Django 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> 

這正確生成的表單頁面,但是當我點擊提交按鈕時,它不會保存數據庫中的數據,現在我無法弄清楚該怎麼做。嘗試了一些意見,但沒有奏效。

有人可以幫我嗎?非常感謝你。

+2

你讀過基本教程嗎?這也將有助於https://docs.djangoproject.com/en/dev/topics/forms/#working-with-forms – Rohan 2013-05-09 10:44:44

+2

不需要使用modelform_factory - 只需導入RecadoForm並使用它。 – 2013-05-09 10:51:21

+0

我沒有閱讀文檔,但我試圖把應該在另一個視圖中處理髮布數據的代碼(不知道爲什麼我這麼做) – fgalvao 2013-05-09 23:47:48

回答

0

如果您正在使用的Django 1.5工作嘗試THIS

也許你的看法可能是:

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) 
相關問題