Как динамически изменить тип поля Django Form (например, `forms.CharField` на `forms.ChoiceField`) без изменения переменной-члена данных?
TL;DR
Как я могу изменить поисковый термин CharField (в любой из строк на изображении ниже) на другой тип поля (например, ChoiceField, DateField и т.д.) на основе типа выбранного поля базы данных (в первом списке select в этой строке - см. скриншот ниже)?
Длинная версия
У меня есть классный иерархический интерфейс расширенного поиска, например:
Каждая строка задает поисковый термин/условие и читается как поиск, например:
<field> <condition> <term>
e.g.
age > 5
где имена полей формы:
fld(для "поля базы данных")ncmp(для "отрицаемого типа сравнения")val(для поискового термина)
 Есть скрытое поле pos для данных типа иерархии и группы, но это не имеет отношения к моему вопросу.
Строки и подгруппы могут быть динамически добавлены/удалены в/из иерархии и могут быть and-ed или or-ed вместе.
Это отлично работает.  Но проблема, которую я хочу решить, заключается в том, что она несколько ограничена типом поля.  Я хотел бы иметь возможность динамически изменять содержимое списка выбора condition (ncmp) и тип поля термина поиска (val) на основе выбранного поля базы данных (fld) (или выбранного condition, например, если isnull: скрыть поле термина).  Вот несколько примеров того, что я хочу:
- If the selected 
fieldis a timestamp, I'd like theconditionlist to have selections likebefore/after/on day/etcand thetermfield to be a "timestamp" field with like a calendar widget or something - If the 
fieldis a number type DB field, remove thecontains/ends with/starts with/etcconditionitems and use a number validator on thetermfield - If the 
fieldis an enumeration DB field, populate theconditionselect list withis/is not/is null/is not null/etcand make thetermfield a select list 
 Есть ли какие-нибудь стандартные способы сделать это?  В идеале, форма должна по-прежнему иметь только 3 поля (fld, ncmp и val), чтобы мне не пришлось переделывать иерархический javascript, который управляет наборами форм, но я могу сделать это, если необходимо.
