Каков правильный метод проверки ввода для пользовательского мультивиджета в каждом из этих случаев:
- если я хочу реализовать пользовательское поле?
- если я хочу использовать существующий тип поля базы данных (например, 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()
.
Поэтому мой третий вопрос заключается в том, должен ли я делать это каким-то другим способом? В этом случае мне не нужно настраиваемое поле.
Спасибо.