Make a model form field not required

84 views
Skip to first unread message

Brendan Edwards

unread,
May 16, 2014, 1:10:33 AM5/16/14
to django...@googlegroups.com
Hi,

I am having some issues with making my form/model fields not required. Currently this is the code that I have:

forms.py:

class startRound(forms.ModelForm):
player_2 = forms.CharField(widget=forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_2'}))
player_3 = forms.CharField(widget=forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_3'}))
player_4 = forms.CharField(widget=forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_4'}))
class Meta:
model = parentRounds

models.py
class parentRounds(models.Model):
Name = models.CharField(max_length=200)
player_1 = models.CharField(max_length=25)
player_2 = models.CharField(max_length=25, null=True, blank=True)
player_3 = models.CharField(max_length=25, null=True, blank=True)
player_4 = models.CharField(max_length=25, null=True, blank=True)
started_on = models.DateTimeField(auto_now_add=True)
completed = models.BooleanField(default = False)

The template is just the generic {{ form.player_1 }} with some jquery to hide/show player 2,3,4 depending on the select box value for number of players. Before I started adding jquery code to the template, this worked fine.

Any ideas what could have happened?!

Thanks in advance!
Brendan

Sergej Peleshok

unread,
May 16, 2014, 9:54:57 AM5/16/14
to django...@googlegroups.com
Now you just redefine fields with required=True by default. You need update widgets in __init__.

class startRound(forms.ModelForm):

class Meta:
model = parentRounds

        def __init__(self, *args, **kwargs):
                forms.ModelForm.__init__(self, *args, **kwargs)

                self.fields['player_2'].widget = forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_2'})
                self.fields['player_3'].widget = forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_3'})
                self.fields['player_4'].widget = forms.TextInput(attrs={'disabled':'True', 'hidden':'True', 'id':'player_4'})


пятница, 16 мая 2014 г., 4:10:33 UTC+3 пользователь Brendan Edwards написал:

Brendan Edwards

unread,
May 16, 2014, 10:14:57 PM5/16/14
to django...@googlegroups.com
Works like a charm, but I don't completely understand why that is necessary. When I defined the text input as hidden and disabled, it overwrote the initial settings of that field? 

what exactly does this line do?
Reply all
Reply to author
Forward
0 new messages