DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
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()





Comments
Bob La Quey replied on Fri, 2010/02/12 - 9:13pm
class Locations(models.Model): Municipalities = SerializedDataField(blank=True, null=True) class LocationsForm(ModelForm): Municipalities = forms.ChoiceField(widget=SelectCityWidget()) def __init__(self, choices,*args,**kwrds): super(LocationsForm,self).__init__(*args, **kwrds) self.fields['Municipalities'].choices=choices # see http://snippets.dzone.com/posts/show/7936 for explanation by Chuck Martin class Meta: model=Locations