向Django的内置评论应用程序添加可选字段

2024-05-20 09:38:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想添加一个拇指向上和拇指向下计数器作为评论字段。 我在一个名为“MyComment”的类中添加了两个integerfield型号.py. 我也使用表单.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

在那之后,当我提交一个评论时,它说:拇指向上和拇指向下是必需的。 如何使它们成为可选的,就像默认字段“Users'URL”? 任何帮助都将不胜感激。你知道吗

好的,这是我的MyComment模型:

from django.contrib.comments.models import Comment

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

Tags: djangofromimportselfdatagetmodelscomment
3条回答

您应该在模型中如下设置字段可选:

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

修改模型。。。这是工作。你知道吗

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,因为您为模型中的字段设置了默认值。你知道吗

您可以通过设置“required”来告诉字段是可选的:

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

相关问题 更多 >