2014-10-26 62 views
0

我正在實現一個星級評分系統,並且我無法使表單進行驗證。我正在使用自定義小部件(請參閱下面的代碼),並使用此插件http://plugins.krajee.com/star-rating。選擇評分時,我將輸入值設置爲評分值。我希望輸入上的這個值是由表單清理和驗證的值,但現在表單總是提示該評級是必填字段。我如何讓我的Django表單接受這個自定義小部件的輸入值作爲驗證的值?使用自定義控件Django窗體處理

class StarRatingsWidget(forms.Widget): 

    def render(self, name, value, attrs=None): 
     return mark_safe('<input id="id_star_rating" type="number" class="rating" min=0 max=5 step=0.5 data-size="xs" data-glyphicon="false" data-show-caption="false" >') 
+0

您是否在尋找一種方法來定義默認值? – alejoss 2014-10-26 20:04:24

+0

不,我想要一種方法將輸入元素的值發送到表單以通過驗證。此時表單由於輸入被視爲空而無法驗證。 – rfj001 2014-10-26 20:32:57

回答

0

原來我需要爲我的小部件提供正確的名稱,每Django的形式標準,並實現value_from_datadict方法返回控件的值。

class StarRatingsWidget(forms.Widget): 

    def render(self, name, value, attrs=None): 
     return mark_safe('<input name="%s" id="id_rating" type="number" class="rating" value=0 min=0 max=5 step=0.5 data-size="xs" data-glyphicon="false" data-show-caption="false" >' % name) 

    def value_from_datadict(self, data, files, name): 
     return float(data[name]) 
相關問題