python - How to get rid of the bogus choice generated by RadioSelect of Django Form -


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