将可选字段添加到django的内置评论应用中

时间:2014-11-04 14:28:32

标签: python django forms

我想添加一个拇指向上和拇指向下计数器作为注释字段。 我在models.py中将一个名为“MyComment”的类添加了两个IntegerField。 我也使用这样的forms.py:

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

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

好的,这是我的MyComment模型:

from django.contrib.comments.models import Comment

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以通过设置" required":

告诉字段是可选的
class MyCommentForm(CommentForm):
    thumbs_up = forms.IntegerField(required=False)
    thumbs_down = forms.IntegerField(required=False)

答案 2 :(得分:0)

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

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

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