Я немного новичок в Django, но смог найти все ответы на мои проблемы, кроме этой.
Я хотел отправить форму, в которой были бы как целочисленные поля, так и поля текстовой области
Таким образом, при обычной отправке формы я смог получить данные из формы и использовать form.cleaned_data для сохранения формы
Когда я захотел обновить ту же форму, я извлек эти конкретные данные таблицы и загрузил их в форму для простых изменений.
Но когда я попытался повторно отправить форму, изменив значения, форма отправляла предыдущие данные целочисленных полей, которые я передал в форму, а не измененные значения.
Но он отправляет обновленные значения текстовой области как обычно.
Это изображение, когда данные извлекаются и передаются в форму.
Перед редактированием
И это после того, как я отредактировал форму После того, как я отредактировал
напечатанные данные request.post после того, как я отправил форму с обновленными значениями
Возвращает предыдущие значения, а не обновленные значения
<tr><th><label for="id_Number_of_existing_programmes">Number of existing programmes:</label></th><td>
<input type="number" name="Number_of_existing_programmes" value="5" required id="id_Number_of_existing_programmes"></td></tr>
Здесь число хранится в значении, а не внутри тегов html, как это обычно бывает с текстовыми полями.
как это
<textarea name="Department_center" cols="40" rows="10" required id="id_Department_center">Like this</textarea>
Единственное решение, о котором я могу подумать, это не передавать данные, являющиеся полями типа Integer, а только данные, имеющие тип текста, в формы.
Есть ли другой вариант?
Model.py код
Number_of_existing_programmes = models.IntegerField()
Не добавили ни одного виджета в form.py для этого поля, поэтому он по умолчанию
class Criteria1_PhDForm(ModelForm):
class Meta:
model = m.Criteria1_PhD
exclude = ['Criteria1']
и код в views.py
для загрузки уже предоставленных данных
phd = f.Criteria1_PhDForm(instance=m.Criteria1_PhD.objects.get(Criteria1=criteria1_get))
request.post
phd = f.Criteria1_PhDForm(request.POST)
Восстановление данных из БД в порядке, и верные данные возвращаются, но они не изменяются при повторной отправке
request.post не получает обновленные данные, но следующий код работает, как обычно, при обновлении данных текстового поля
m.Criteria1_PhD.objects.filter(Criteria1=criteria1_get).update(**phd.cleaned_data)
Любая помощь будет оценена. Спасибо