Вообщем, я в тупике.Честно долго пытался решить проблемку сам,что бы никого не тревожить, не вышло, поэтому прошу о помощи (
Собственно проблема:
Собрал блог, решил прикрутить простейший комментарии состоящий из формы модели, на ошибки Django перестал ругаться, вроде работает, определяет method==POST, делает редирект, но ничего не сохраняет и ни на что не ругается(
Ниже код представления:
from blog.models import Post, Comment, CommentForm
from django.views.generic import ListView, DetailView
from django.utils import timezone
from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
class PostsListView(ListView):
model = Post
def get_queryset(self):
return Post.objects.order_by('-datetime')
def PostDetailFuncView(request,pk):
context = {}
context['post'] = Post.objects.get(id = pk)
context['comment_list'] = Comment.objects.filter(post = pk)
template_name = 'blog/post_detail.html'
if request.method == 'POST':
PostForComment = Post.objects.get(id = pk)
cf = CommentForm(request.POST,instance = PostForComment)
if cf.is_valid():
cf.save(commit=False)
cf.datetime = timezone.now()
cf.save() #<-- есть у меня подозрение ,что где-то тут напортачил(
return HttpResponseRedirect('/blog/')
else:
context['form']=CommentForm()
return render(request,template_name,context)
А вот тут модели:
from django.db import models
from django.forms import ModelForm
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=255)
datetime = models.DateTimeField("Дата публикации",auto_now_add=True)
content = models.TextField(max_length=10000)
def __str__(self):
return self.title
def get_absolute_url(self):
return "/blog/%i/" % self.id
class Comment(models.Model):
autor = models.CharField(max_length=20)
message = models.TextField(max_length=100)
datetime = models.DateTimeField("Дата публикации",auto_now=True)
post = models.ForeignKey(Post)
def __str__(self):
return self.message
class CommentForm(ModelForm):
class Meta:
model = Comment
fields = ['autor','message']
Заранее спасибо)