Over a million developers have joined DZone.

Changing Django Form Field Properties On Init

·
// For changing a form field's properties when the form is
// initialized. This snippet shows how to limit a query set
// for a ModelChoiceField and how to add an attribute to an
// html tag


from django import forms
from mymodels import Group

class MyForm(forms.Form):
    group=forms.ModelChoiceField(queryset=None)
    email=forms.EmailField()
    some_choices=forms.ChoiceField()
    junk=forms.CharField()

    def __init__(self,my_var,*args,**kwrds):
        super(MyForm,self).__init__(*args,**kwrds)
        self.fields['group'].queryset=Group.objects.filter(...)
        self.fields['email'].widget.attrs['size']='50'
        self.fields['email'].help_text='some text'
        self.fields['some_choices'].choices=[[x,x] for x in list_of_stuff]

        # I used this when I wanted to subclass a built-in form and I 
        # wanted to remove this input
        self.fields['junk'].widget=forms.HiddenInput()
Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}