在每种情况下,验证自定义 multiwidget 输入的正确方法是什么:
- 如果我想实现一个自定义字段?
- 如果我想使用现有的数据库字段类型(比如 DateField)?
这样做的动机来自以下两个问题:
我特别感兴趣的是我觉得自己被骗了。我这样用过value_from_datadict()
:
def value_from_datadict(self, data, files, name):
datelist = [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)]
try:
D = date(day=int(datelist[0]), month=int(datelist[1]), year=int(datelist[2]))
return str(D)
except ValueError:
return None
它查看POST
字典并为我的小部件构造一个值(请参阅链接问题)。但是,与此同时,我进行了一些验证;即如果D
作为日期对象的创建失败,我将返回None
,这将在is_valid()
检查中失败。
因此,我的第三个问题是我应该以其他方式这样做吗?对于这种情况,我不想要自定义字段。
谢谢。