2013-07-07 3 views
2

У меня проблема с сохранением комментариев для приложения для блога. Я пишу в Django. Ошибка: AttributeError at /blog/123456/ 'comment' object has no attribute 'is_valid'Django: Форма AttributeError не имеет атрибута 'is_valid'

Мой models.py:

from django.db import models 

class comment(models.Model): 
    comID = models.CharField(max_length=10, primary_key=True) 
    postID = models.ForeignKey(post) 
    user = models.CharField(max_length=100) 
    comment = models.TextField() 
    pub_date = models.DateTimeField(auto_now=True) 

views.py:

from django.http import HttpResponse 
from django.shortcuts import render 
from django.template import RequestContext, loader 
from django.db.models import Count 
from blog.models import post, comment 
from site.helpers import helpers 

def detail(request, post_id): 
    if request.method == 'POST': 
     form = comment(request.POST) 
     if form.is_valid(): 
      com = form.save(commit=False) 
      com.postID = post_id 
      com.comID = helpers.id_generator() 
      com.user = request.user.username 
      com.save() 
      return HttpResponseRedirect('/blog/'+post_id+"/") 
    else: 
     blog_post = post.objects.get(postID__exact=post_id) 
     comments = comment.objects.filter(postID__exact=post_id) 
     form = comment() 
     context = RequestContext(request, { 
      'post': blog_post, 
      'comments': comments, 
      'form': form, 
     }) 
     return render(request, 'blog/post.html', context) 

Я не уверен, что вопрос, из учебников/примеров, которые я глядя, form должен иметь атрибут is_valid(). Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

+2

Что заставляет вас думать, что 'комментарий' является формой? Это модельный объект; вы импортировали его из своего модуля модели. –

+0

@MartijnPieters О, теперь я чувствую себя глупо. У меня создалось впечатление, что модели создают формы. Спасибо что подметил это. Теперь я напишу некоторые формы. – Jeremy

ответ

1

comment - это модель. Метод is_valid присутствует в формах. Я думаю, что вы wnat сделать, это создать ModelForm для комментариев, как это:

from django import forms 
from blog.models import comment 

class CommentForm(forms.ModelForm):   
    class Meta: 
     model=comment 

И использовать CommentForm как интерфейс ввода-вывода для comment класса.

Вы можете узнать больше о ModelForms at the docs

Надеются, что это помогает!

Смежные вопросы