Я изучаю 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>
Это создает форму правильно на , но когда я нажимаю кнопку «Отправить», она не сохраняет данные в базе данных, и теперь я не могу понять, что делать. Пробовал некоторые вещи с представлениями, но ничего не получилось.
Может кто-нибудь мне помочь, пожалуйста? Большое спасибо.
Вы читали основной учебник? Это будет полезно также https://docs.djangoproject.com/en/dev/topics/forms/#working-with-forms – Rohan
Нет необходимости использовать modelform_factory - просто импортируйте RecadoForm и используйте это. –
Я прочитал документацию, но я пытался поместить код, который должен обрабатывать данные сообщения в другом представлении (не знаю, почему я это сделал) – fgalvao