Учу django, пишу блог.
Хочу добавить возможность писать комментарии к постам, но ни как не выходит создать поле для ввода в шаблоне. Куда вообще копать? Единственное что близкое нашел это использовать get_context_data. Но не уверен, что для форм это подойдет.
forms.py:
from django import forms
from blog.models import Comment
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
exclude = ['post', 'datetime']
views.py:
from blog.models import Post
from django.views.generic import ListView, DetailView
from blog.forms import CommentForm
class PostsListView(ListView): # as list
model = Post
class PostDetailView(DetailView):
model = Post
models.py:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=255) # title of post
datetime = models.DateTimeField(u'Дата публикации') # date of post
content = models.TextField(max_length=10000) # text of post
def __str__(self):
return self.title
def get_absolute_url(self):
return '%i/' % self.id
class Comment(models.Model):
text = models.CharField(max_length=1000)
post = models.ForeignKey(Post)
datetime = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.text
post_detail.html:
{% block content %}
<h2>{{ post.title }}</h2>
<p>{{ post.datetime }}</p>
<p>{{ post.content }}</p>
{% endblock %}
{% block comment %}
<h4>Comments</h4>
{% for comment in post.comment_set.all %}
<p>{{ comment.datetime }}</p>
<p>{{ comment.text }}</p>
{% endfor %}
<form action='' method='post'>
{{ comment.text.as_p }}
<input type='submit' value='Submit' />
</form>
{% endblock %}
появилось поле ввода, но данные не сохраняются. Что-то не так делаю
views.py:
from blog.models import Post
from django.views.generic import ListView, DetailView
from blog.forms import CommentForm
class PostsListView(ListView): # as list
model = Post
class PostDetailView(DetailView):
model = Post
def get_context_data(self, *args, **kwargs):
context = super(PostDetailView, self).get_context_data(**kwargs)
context['comment'] = CommentForm()
return context