使用自定义小部件的Django表单处理

时间:2014-10-26 19:08:49

标签: django django-forms

我正在实施星级评分系统,而我无法获取表单进行验证。我正在使用自定义小部件(请参阅下面的代码)和此插件http://plugins.krajee.com/star-rating。选择评级后,我将输入值设置为评级值。我希望输入上的这个值是表单清理和验证的值,但是现在表单总是提示返回该评级是必填字段。如何让我的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" >')

1 个答案:

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