А как насчет того, чтобы вывести куда-нибудь cleaned_data на экран или в файл - просто чтобы проверить, какие ключи он получает? Отладчик также должен показывать словарь местным жителям. Я предполагаю, что это либо префикс утерян / неправильно написан, либо имя поля формы.
Между прочим, я согласен, что использование .get () безопаснее (даже несмотря на то, что is_valid () уже должен обрабатывать проверку формы, однако вы можете в будущем изменить это поле на необязательное, а затем этот код будет ошибкой), поэтому:
name = add_form.cleaned_data.get('type_name',None),
gainful = add_form.cleaned_data.get('gainful',None),
if name and gainful:
pass
#rest of the code