2014-11-04 75 views
0

我想添加一个拇指向上和缩略计数器作为评论的字段。 我在models.py中添加了两个IntegerFields到一个名为'MyComment'的类。 我也使用这样的forms.py:将可选字段添加到django的内置评论应用

from django import forms 
from django.contrib.comments.forms import CommentForm 
from blog.models import MyComment 

class MyCommentForm(CommentForm): 
    thumbs_up = forms.IntegerField() 
    thumbs_down = forms.IntegerField() 

def get_comment_model(self): 
    return MyComment 

def get_comment_create_data(self): 
    data = super(MyCommentForm, self).get_comment_create_data() 
    data['thumbs_up'] = self.cleaned_data['thumbs_up'] 
    data['thumbs_down'] = self.cleaned_data['thumbs_down'] 
    return data 

之后,当我提交评论,它说:thumbs_up和thumbs_down是必需的。 如何使它们成为可选项,就像默认字段“用户的URL”一样? 任何帮助将不胜感激。

OK,这是我MyComment型号:

from django.contrib.comments.models import Comment 

class MyComment(Comment): 
    thumbs_up = models.IntegerField(default=0) 
    thumbs_down = models.IntegerField(default=0) 
+0

给你'MyComment'模型。 – 2014-11-04 15:23:08

+0

感谢您的所有努力。还是行不通。我会从头开始写我自己的评论模型。 – Yearner 2014-11-05 05:10:00

回答

0

你可以告诉领域是通过设置 “必需的” 可选:

class MyCommentForm(CommentForm): 
    thumbs_up = forms.IntegerField(required=False) 
    thumbs_down = forms.IntegerField(required=False) 
+0

谢谢,但是当我提交时,它显示:“列'thumbs_up'不能为空”。我试过“thumbs_up = forms.IntegerField(默认= 0,必需= False)”,但它也是错误的。任何建议? – Yearner 2014-11-04 15:17:31

0

修改模型......这是工作。

class MyComment(Comment): 
    thumbs_up = models.IntegerField(default=0, blank=True) 
    thumbs_down = models.IntegerField(default=0, blank=True) 

空白属性让你在管理面板中设置为null,而null属性让你在数据库中设置null(null = True)。我认为在你的情况下,你只需要设置blank = True,因为你为模型中的字段设置了默认值。

+0

'blank = True'和'null = True'是模型字段,在表单字段中我们必须使用'required = False'。 – 2014-11-04 15:35:18

+0

是的,你是对的...我在看到你的评论之前编辑了我的答案......无论如何感谢 – 2014-11-04 15:39:46

1

你应该设置场模型可选这样的:

class MyComment(Comment): 
    thumbs_up = models.IntegerField(default=0) 
    thumbs_down = models.IntegerField(default=0) 

看看Field options以获取更多信息。 ,改变你的形式是这样的:

class MyCommentForm(CommentForm): 
    thumbs_up = forms.IntegerField(required=False) 
    thumbs_down = forms.IntegerField(required=False) 

,改变get_comment_create_data这样的:

def get_comment_create_data(self): 
    data = super(MyCommentForm, self).get_comment_create_data() 
    data['thumbs_up'] = self.cleaned_data.get('thumbs_up', 0) 
    data['thumbs_down'] = self.cleaned_data.get('thumbs_down', 0) 
    return data 
+0

@ Aida.Mirabadi @Hanan Ramezani对不起,我的意思是我希望该字段的默认值为零。不喜欢用户的网址,这真的是空的。而且我还是得到了这个错误消息:'(1048,“列'thumbs_up'不能为空')' – Yearner 2014-11-04 15:51:04

+0

@Yearner检查我的编辑器答案。 – 2014-11-04 16:11:29