Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Changing Django Form Field Properties On Init

DZone's Guide to

Changing Django Form Field Properties On Init

·
Free Resource
// 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:

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

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

{{ parent.tldr }}

{{ parent.urlSource.name }}