我试图在自定义的问题中构建一些东西,试图使用自定义字段和自定义小部件来实现我的目标。但不幸的是,我无法找到足够的文档来指导我通过...django自定义小部件和字段作为向导中的多个按钮
在我的情况下,我试图构建向导的第一种形式,第一种形式将包括一个单一字段,我正在传递选择字典预填充来自数据库。字典看起来像这样
choices = {
1 : {
'display_name' : 'Bronze',
'description' : 'this package contain all the cool features and much more.',
},
2 : {
'display_name' : 'Silver',
'description' : 'this package contain all the cool features and much less.',
},
}
所看到的字典包含从数据库动态提供的服务,它将在初始化时被馈送到字段。在另一方面,我需要建立一个自定义字段和窗口小部件,将填充以下HTML
<div class="choices">
<div class="span3">
<h2>Bronze</h2>
<p>
this package contain all the cool features and much more.
</p>
<input type="button" name="Bronze" value="1" />
</div>
<div class="span3">
<h2>Silver</h2>
<p>
this package contain all the cool features and much less.
</p>
<input type="button" name="Silver" value="2" />
</div>
</div>
其中每个span3代表与包描述名称和按钮行选择和移动向导中的下一步。在另一方面,我试图建立一个简单的自定义字段如下
class PackageField(forms.CharField):
default_error_messages = {
'not_valid_package': _(u'Package selected is not a valid package.'),
}
def to_python(self, value):
print value
if value in self.validators:
return None
return value
和widget.py
class PackageWidget(MultiWidget):
_choices =()
def __init__(self, choices, attrs=None):
self._choices = choices
super(PackageWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
output = []
for k, v in self._choices:
output.append('<div class="span3">%s<input type="button" class="btn"/></div>' % v)
return mark_safe(self.format_output(output))
,但我肯定有很多错误的与我写的自定义字段的方式和小部件,因为他们扔错误。
如果有人能指导我正确的方向如何编写一个正确的自定义字段&小部件,如果有人可以通过我参考,我可以阅读更多,这将有很大帮助,我将不胜感激。
那么你的窗体是什么样的?或者你只是渲染一个Widget? – milkypostman 2012-08-02 18:59:44
我的表单只包含使用其小部件呈现的单个字段..它不包含太多.. – 2012-08-02 19:10:37