2014-11-04 74 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