Kaydet (Commit) f110da91 authored tarafından Gary Wilson Jr's avatar Gary Wilson Jr

Fixed #5993 -- Made `RadioSelect` easier to subclass by giving it a default…

Fixed #5993 -- Made `RadioSelect` easier to subclass by giving it a default `renderer` as a class attribute.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6717 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst 183a457f
...@@ -317,11 +317,13 @@ class RadioFieldRenderer(StrAndUnicode): ...@@ -317,11 +317,13 @@ class RadioFieldRenderer(StrAndUnicode):
% force_unicode(w) for w in self])) % force_unicode(w) for w in self]))
class RadioSelect(Select): class RadioSelect(Select):
renderer = RadioFieldRenderer
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.renderer = kwargs.pop('renderer', None) # Override the default renderer if we were passed one.
if not self.renderer: renderer = kwargs.pop('renderer', None)
self.renderer = RadioFieldRenderer if renderer:
self.renderer = renderer
super(RadioSelect, self).__init__(*args, **kwargs) super(RadioSelect, self).__init__(*args, **kwargs)
def get_renderer(self, name, value, attrs=None, choices=()): def get_renderer(self, name, value, attrs=None, choices=()):
......
...@@ -663,6 +663,16 @@ You can create your own custom renderers for RadioSelect to use. ...@@ -663,6 +663,16 @@ You can create your own custom renderers for RadioSelect to use.
<label><input checked="checked" type="radio" name="beatle" value="G" /> George</label><br /> <label><input checked="checked" type="radio" name="beatle" value="G" /> George</label><br />
<label><input type="radio" name="beatle" value="R" /> Ringo</label> <label><input type="radio" name="beatle" value="R" /> Ringo</label>
Or you can use custom RadioSelect fields that use your custom renderer.
>>> class CustomRadioSelect(RadioSelect):
... renderer = MyRenderer
>>> w = CustomRadioSelect()
>>> print w.render('beatle', 'G', choices=(('J', 'John'), ('P', 'Paul'), ('G', 'George'), ('R', 'Ringo')))
<label><input type="radio" name="beatle" value="J" /> John</label><br />
<label><input type="radio" name="beatle" value="P" /> Paul</label><br />
<label><input checked="checked" type="radio" name="beatle" value="G" /> George</label><br />
<label><input type="radio" name="beatle" value="R" /> Ringo</label>
A RadioFieldRenderer object also allows index access to individual RadioInput A RadioFieldRenderer object also allows index access to individual RadioInput
objects. objects.
>>> w = RadioSelect() >>> w = RadioSelect()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment