Django 如何修改表单存档数据?
我有一个模型:Django 如何修改表单存档数据?,django,modelform,cleaned-data,Django,Modelform,Cleaned Data,我有一个模型: class PastStudy(Model): grade_average = FloatField(null=True) 我有一个模型,如下所示: class PastStudyForm(ModelForm): class Meta: model = PastStudy fields = ('grade_average', ) 我的看法是: ... if request.POST: past_study_form =
class PastStudy(Model):
grade_average = FloatField(null=True)
我有一个模型,如下所示:
class PastStudyForm(ModelForm):
class Meta:
model = PastStudy
fields = ('grade_average', )
我的看法是:
...
if request.POST:
past_study_form = PastStudyForm(request.POST)
if past_study_form.is_valid():
return HttpResponse(past_study_form.cleaned_data['grade_average'])
else:
profile_filter_past_study_form = ProfileFilterPastStudyForm()
...
我需要的是,我想为PastStudyForm编写一个干净的方法,以便在我输入90作为平均分数的情况下,HttpResponse将其转换为两个0-20的评分方案,并返回18。
我试过了,但我还是得了90分而不是18分
class PastStudyForm(ModelForm):
class Meta:
model = PastStudy
fields = ('grade_average', )
def clean(self):
cleaned_data = super().clean()
grade_average = self.cleaned_data['grade_average']
self.cleaned_data['grade_average'] = grade_average/5
return cleaned_data
这是:
class PastStudyForm(ModelForm):
class Meta:
model = PastStudy
fields = ('grade_average', )
def clean_grade_average(self):
grade_average = self.cleaned_data['grade_average']
data = grade_average/5
return data
不过,我还是得了90分。我也尝试了一些其他的方法,但我仍然在HttpResponse中获得了90分
也许使用干净的方法是错误的,我应该做些别的
真正的代码是巨大的,我在这里对其进行了总结,这里没有解释问题的其他方面。这就是为什么我更喜欢并希望得到一个响应,在响应中,我被建议如何在表单定义中使用它,而不是在视图中转换它等其他方法。在
clean
方法中,您将计算方法的结果分配到self.cleaned\u数据中,
当您返回已清理的\u数据时
未自清理的\u数据
这是不同的变量
请尝试以下方法:
self.cleaned_data = super().clean()
grade_average = self.cleaned_data['grade_average']
self.cleaned_data['grade_average'] = grade_average/5
return self.cleaned_data
它不起作用了,我仍然得到和以前一样的结果。看起来干净的方法与这种情况无关。我在文档中发现了这一点:Form.clean()在必须为相互依赖的字段添加自定义验证时,在表单上实现clean()方法。请参阅清理和验证相互依赖的字段,例如用法。如果您在响应中返回过去的研究表
,然后在模板中写入过去的研究表。成绩平均值
,会发生什么情况?相同的结果?我没有request.POST的模板。我将它作为HttpResponse返回。请坚持这种情况,告诉您在测试的HttpResponse中要写什么,并让您知道结果会是什么