How to render a Django form with RadioSelect without getting a checked radiobutton by default?

前端 未结 3 1129
后悔当初
后悔当初 2021-02-12 22:45

On Django 1.2.1 I\'m using ModelForm and generating a form with radiobuttons:

class myModelForm(ModelForm):    
    class Meta:
        model = myModel
        w         


        
相关标签:
3条回答
  • 2021-02-12 23:30

    This is kind of a hacky solution, but I've tested it to work: simply set the default for the field to a value that isn't one of the choices (I recommend setting it to None). When rendering the form, Django won't know which input to mark as checked, so it will leave all of them unchecked (without throwing an error). And the fact that there is a default means there will be no auto-generated input field.

    0 讨论(0)
  • 2021-02-12 23:41

    In Django 1.6 (didn't test it in other versions) all you need is default=None:

    class myModel(models.Model):
        choose = models.CharField(..., default=None)
    
    class myModelForm(ModelForm):
        class Meta:
            model = myModel
            widgets = {
                'choose': RadioSelect(),
            }
    
    0 讨论(0)
  • 2021-02-12 23:46

    The previous solution wouldn't work for me.

    Therefore I just slice out the first widget's choice.

    class myModelForm(ModelForm):
        def __init__(self, *args, **kwargs):
            super(ContactForm, self).__init__(*args, **kwargs)
            self.fields['choose'].choices = self.fields['choose'].choices[1:]
    
        class Meta:
            model = myModel
            widgets = {
                'choose': RadioSelect(),
            } 
    
    0 讨论(0)
提交回复
热议问题