У вас есть три варианта в зависимости от того, как вы выводите свой подкласс Django Form на HTML-страницу.
Первый вообще не касается формы. Любые входные данные HTML-формы будут в конечном итоге в request.POST, так что вы можете получить к ним доступ там. Правда, они не будут привязаны к вашему подклассу Form, поэтому вам придется вручную ввести значение либо с помощью пользовательского конструктора формы, либо путем установки какого-либо свойства в вашем объекте Form после создания экземпляра его с помощью request.POST. Это, вероятно, наименее желательный вариант, но я упомяну его в случае, если ваш вариант использования действительно не поддерживает ничего другого.
Второй вариант, если вы вручную выводите поля формы в своем HTML (то есть: используете {{ myform.field }}
вместо {{ myform }}
. В этом случае создайте скрытую переменную, которая будет содержать значение вашего инструмента календаря с графическим интерфейсом ( Скорее всего, ваши инструменты GUI уже предлагают / требуют его.) Добавьте это скрытое поле с правильным именем и идентификатором в сам подкласс Form, убедившись, что у него есть скрытый виджет формы django. При необходимости используйте javascript, как предлагает Роб. Заполните скрытое поле. Когда форма будет опубликована, она будет привязана к вашему подклассу формы как обычно, потому что на этот раз у вас есть поле в подклассе формы с этим именем. Механизм для clean()
будет работать как обычно.
Третий и лучший вариант - написать собственное поле django; Эндрю пост имеет ссылку. Поля Django могут указывать требования js
и css
, поэтому вы можете автоматически инкапсулировать эти зависимости для любой страницы, которая использует виджет календаря.