我想预处理提交给CreateView
的值,以使它们得到验证。例如,用于在表单中输入的字符串的自定义int解析器。
在我的情况下,我想将以CreateView
形式输入的字符串(如“ 1:54.363”)转换为整数(具有现有函数parse_laptime
),然后将其保存在模型中:
class Lap(models.Model):
laptime = models.IntegerField(default=0)
如何做到最好?我是Django的新手,并尝试使用具有覆盖的
clean
方法的自定义Form,但是该字段事先未通过验证,因此不会传递给clean()
。 最佳答案
我认为您在使用表格验证数据方面走了正确的路。但是,您的输入未能通过验证测试,这仅是因为以时间值格式格式化的输入数据不是模型所需的整数。
您应使用接受输入数据的表单(或未绑定表单)中的未绑定字段-可能用作字符字段。然后,对此未绑定字段使用clean方法,以确认可以转换数据(基于格式和/或值)。实际的转换应在视图逻辑中进行,也许在form_valid()方法中进行。