Difference between returning modified class and using type().
I guess it's more of a python question than a django one, but I couldn't replicate this behavior anywhere else, so I'll use exact code that doesn't work as expected.

I was working on some dynamic forms in django, when I found this factory function snippet:

    def get_employee_form(employee):
        """Return the form for a specific Board."""
        employee_fields = EmployeeFieldModel.objects.filter(employee = employee).order_by   ('order')
        class EmployeeForm(forms.Form):
            def __init__(self, *args, **kwargs):
                forms.Form.__init__(self, *args, **kwargs)
                self.employee = employee
            def save(self):
                "Do the save"
        for field in employee_fields:
            setattr(EmployeeForm, field.name, copy(type_mapping[field.type]))
        return type('EmployeeForm', (forms.Form, ), dict(EmployeeForm.__dict__))

[from :<http://uswaretech.com/blog/2008/10/dynamic-forms-with-django/>]

And there's one thing that I don't understand, <b> why returning modified EmployeeForm doesn't do the trick?</b> 
I mean something like this:

    def get_employee_form(employee):
        #[...]same function body as before

        for field in employee_fields:
            setattr(EmployeeForm, field.name, copy(type_mapping[field.type]))
        return EmployeeForm

When I tried returning modified class django ignored my additional fields, but returning type()'s result works perfectly.

Difference between returning modified class and using type().
===

I guess it's more of a python question than a django one, but I couldn't replicate this behavior anywhere else, so I'll use exact code that doesn't work as expected.

I was working on some dynamic forms in django, when I found this factory function snippet:

    def get_employee_form(employee):
        """Return the form for a specific Board."""
        employee_fields = EmployeeFieldModel.objects.filter(employee = employee).order_by   ('order')
        class EmployeeForm(forms.Form):
            def __init__(self, *args, **kwargs):
                forms.Form.__init__(self, *args, **kwargs)
                self.employee = employee
            def save(self):
                "Do the save"
        for field in employee_fields:
            setattr(EmployeeForm, field.name, copy(type_mapping[field.type]))
        return type('EmployeeForm', (forms.Form, ), dict(EmployeeForm.__dict__))

[from :<http://uswaretech.com/blog/2008/10/dynamic-forms-with-django/>]

And there's one thing that I don't understand, <b> why returning modified EmployeeForm doesn't do the trick?</b> 
I mean something like this:

    def get_employee_form(employee):
        #[...]same function body as before

        for field in employee_fields:
            setattr(EmployeeForm, field.name, copy(type_mapping[field.type]))
        return EmployeeForm

When I tried returning modified class django ignored my additional fields, but returning type()'s result works perfectly.
