Adding custom fields to a django model (without changes in source code)
I know it sounds like an awful hack, but maybe you can build an interface that creates text files?

One file would be models.py, with model definitions, and excluding this model from migrations with managed = False
Another file is the SQL with DROP and CREATE table if the customer wants a new table, or just ALTER table.
Another script can run the SQL script, copy the models.py file to the correct directory, and reload django.
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.