Display a boolean model field in a django form as a radio button rather than the default Checkbox.
        Posted  
        
            by Lakshman Prasad
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Lakshman Prasad
        
        
        
        Published on 2009-06-23T15:53:07Z
        Indexed on 
            2010/05/30
            12:02 UTC
        
        
        Read the original article
        Hit count: 464
        
This is how I went about, to display a Boolean model field in the form as Radio buttons Yes and No.
choices = ( (1,'Yes'),
            (0,'No'),
          )
class EmailEditForm(forms.ModelForm):
    #Display radio buttons instead of checkboxes
    to_send_form = forms.ChoiceField(choices=choices,widget=forms.RadioSelect)
    class Meta:
	model = EmailParticipant
	fields = ('to_send_email','to_send_form')
    def clean(self):
	"""
	A workaround as the cleaned_data seems to contain u'1' and u'0'. There may be a better way.
	"""
	self.cleaned_data['to_send_form'] = int(self.cleaned_data['to_send_form'])
	return self.cleaned_data
As you can see in the code above, I need a clean method that converts input string to an integer, which may be unnecessary.
Is there a better and/or djangoic way to do this. If so, how?
And no, using BooleanField seems to cause a lot more problems. Using that seemed obvious to me; but it isn't. Why is it so.
© Stack Overflow or respective owner