Adding custom fields to a django model (without changes in source code)
Well, when I had such problem, I used to create a custom field model, with a name field and a type field, usually a choice field with choices for the possible field types. You can also add a is_active field to filter the active and inactive CustomFields.
Than, when I create the for, I search this objects to know which fields I must have in that form.
To store the data, I'd have another model, called CustomFieldAnswer, or somethink like this. This model should have a ForeignKey to the main model that should have this data, and the custom field.
Doing so, You can have any kinds of fields for yout model dinamically and wothout you client needing to code anything.
You could use metaprogramming to create acutual fields in a form based on the query in the CustomFields. Or, you could just put the fields in the template and change the type of the input for each CustomField.
Hope that helps!
A customer wants to add custom fields to a django model we provide.
He wants to do this on his own, without programming.
These things should be addable:

boolean (yes/no) fields. Optional "unset"
single choice fields
multiple choice fields
single line text fields
textarea fields
date

Example: 

The customer wants to add a field he calls "was successful". And the field > should have these choices: yes/no/unset. Defaulting to unset.

Things would be easy if I could do it by creating or extending a model. But in this case no source code changes are allowed :-(
How to solve this?
Update
Querying for instances with given values needs to be supported. Example: Show all instances where "was successful" is True.