Hello all,

I'd like an easy way to customize one or more form fields after being
instantiated by a ModelForm. I didn't find anything close in the docs
so I came up with the following:

from django.forms import ModelForm

class CustomModelForm(ModelForm):
    # a mapping of field names to attr./value dicts
    field2attrs = {}

    def __init__(self, *args, **kwargs):
        super(CustomModelForm, self).__init__(*args, **kwargs)
        for name,attrs in self.field2attrs.iteritems():
            field = self.fields[name]
            for attr,val in attrs.iteritems():
                setattr(field,attr,val)

#==== usage ===============

class QnAForm(CustomModelForm):
    field2attrs = {
        'question': dict(widget=TextInput(attrs={'size':100})),
        'answer':   dict(required=False),
    }
    class Meta:
        model = models.QnA


Is there a better way to do it ? If not, I think it might be useful
enough to be added in the base ModelForm.

George
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to