Есть несколько задач, если вы хотите сделать это полностью. Мир в целом не пошел по этому пути, и поэтому для этого не так много инструментов (если таковые имеются). Но в основном вот основные идеи.
1) Требуется «словарь данных», набор метаданных, который сообщает вам, каковы типы и размеры каждого столбца, а также первичный и внешний ключи.
2) Для вашего примера «знания» о том, что поле должно быть выпадающим, это почти всегда означает, что значение столбца является внешним ключом для другой таблицы. Ваш код обнаруживает это и создает список из значений в родительской таблице.
3) Вы можете зайти так далеко, чтобы создать полный генератор форм для простых таблиц, где генерируется весь HTML, но вам всегда нужен способ переопределить это для более сложных форм. Если вы сделаете это, ваш словарь данных также должен иметь описания столбцов или подписи.
Есть еще много идей, но это отправная точка для того, что вы описываете.