【发布时间】:2019-03-09 20:17:06
【问题描述】:
我对 Django 有点陌生,但能够找到除此之外的所有问题的答案。
我想提交一个同时包含整数字段和文本区域字段的表单 因此,通过通常的表单提交,我能够从表单中获取数据并使用 form.cleaned_data 来保存表单
当我想更新同一个表单时,我检索了特定的表数据并将其加载到表单中以便于更改。
但是当我尝试通过更改值重新提交表单时,表单发送的是我输入给表单的整数字段的先前数据,而不是更改的值。
但它照常发送更新的文本区域值。
这是检索数据并将其输入表单时的图像。 Before editing
这是在我编辑表单之后After editing
在我提交具有更新值的表单后打印 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>
我能想到的唯一解决方案是不将整数字段的数据提供给表单,而只将文本类型的数据提供给表单。
还有其他选择吗?
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)
从 db 检索数据很好,并且检索到正确的数据,但是当我重新提交时它没有被更改
request.post 没有得到更新的数据,但是当文本字段数据更新时,下一个代码照常工作
m.Criteria1_PhD.objects.filter(Criteria1=criteria1_get).update(**phd.cleaned_data)
任何帮助将不胜感激。谢谢
【问题讨论】:
-
这个问题不看你的代码是不可能回答的。 Django 非常有能力为整数字段发送更新的值,所以你正在做一些事情来防止它。
-
从模式、表单和视图文件中添加了更多代码
标签: django