Функция обновления Django ModelForm возвращает ошибку
В настоящее время у меня есть модель настроек для моего приложения Django, которая сохраняет набор настроек для чтения из остальной части программы.
Я попытался создать способ обновления этих настроек в приложении, как показано ниже.
Однако при нажатии на кнопку обновления приложение возвращает переменную 'error':'Bad info' вместо обновления базы данных. Кто-нибудь знает, что может быть причиной этого, потому что я не могу найти никаких ошибок в коде?
Views.py:
def viewSettings(request, settings_pk):
setting = get_object_or_404(SettingsClass, pk=settings_pk)
if request.method == 'GET':
form = SettingUpdateForm(instance=setting)
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form})
else:
try:
form = SettingUpdateForm(request.POST, instance=setting)
form.save()
return redirect('settingsHome')
except ValueError:
return render(request, 'main/viewSettings.html', {'setting': setting, 'form':form, 'error':'Bad info'})
Models.py:
Forms.py:
class SettingsForm(ModelForm):
class Meta:
model = SettingsClass
fields = ('Complex','Trial_balance_Year_to_date' , 'Trial_balance_Monthly' , 'Income_Statement_Year_to_date' , 'Income_Statement_Monthly' , 'Age_Analysis' , 'Balance_Sheet' , 'Repair_and_Maintenance_General_Ledger' , 'Major_capital_Items_General_Ledger')
class SettingUpdateForm(ModelForm):
class Meta:
model = SettingsClass
fields = '__all__'
ViewSettings.html:
да, потому что ваша форма не отправляется на URL вашего представления обновления, так как у вас есть объекты настроек, которые нужно обновить, и вы передаете settings_pk в представлении
поэтому вам нужно добавить id настроек, которые вам нужно обновить.
измените эту строку в HTML
<form method="POST">
to
<form method="POST" action="{ url 'view_name' settings.pk }">