i using modelform on django 1.3.
models.py:
class userprofile(models.model): ... gender = models.charfield(max_length=1, blank=true, choices=(('m', 'male'), ('f', 'female'), ('unspecified', '')), default='m') ...
forms.py:
class userprofileform(modelform): class meta: model = userprofile fields = ('gender') widgets = { 'gender': forms.radioselect(), }
when widget rendered html, got
<ul> <li><label for="id_gender_0"><input type="radio" id="id_gender_0" value="" name="gender" />---------</label></li> <li><label for="id_gender_1"><input checked="checked" type="radio" id="id_gender_1" value="m" name="gender" /> male</label></li> <li><label for="id_gender_2"><input type="radio" id="id_gender_2" value="f" name="gender" />female</label></li> <li><label for="id_gender_3"><input type="radio" id="id_gender_3" value="" name="gender" /> unspecified</label></li> </ul>
problem: how can rid of bogus choice "--------"?
the same problem brought stackoverflow user months ago (here). have tried accepted solution in there (as can see) didn't work me.
even without blank=true shows input. have created new widget:
from itertools import chain django.forms import radioselect django.utils.encoding import force_unicode class radioselectnotnull(radioselect): def get_renderer(self, name, value, attrs=none, choices=()): """returns instance of renderer.""" if value none: value = '' str_value = force_unicode(value) # normalize string. final_attrs = self.build_attrs(attrs) choices = list(chain(self.choices, choices)) if choices[0][0] == '': choices.pop(0) return self.renderer(name, str_value, final_attrs, choices)
Comments
Post a Comment