У меня не было большого успеха, используя решение @ DrV, хотя, возможно, мой вариант использования уникален. Из-за плотности точек я использую наименьший размер маркера, т. Е. plt.plot(x, y, '.', ms=1, ...)
, и хочу, чтобы символы легенды были больше.
Я следил за рекомендацией, которую я нашел на форумах matplotlib :
xlimits = plt.xlim()
) Вот как это получилось (для это точки на самом деле менее важны, чем линии):
Надеюсь, это поможет кому-то еще.
Вам не нужно ничего делать. Вместо этого вы должны переопределить само поле, предоставив атрибут input_formats
:
class BokningForm(forms.ModelForm):
pumpStart = forms.DateTimeField(input_formats=['%Y-%m-%dT%H:%M:%S'])
...
Теперь Django автоматически преобразует значение как часть своего собственного процесса проверки.
Обратите внимание, что если вы используете JSON, вы, вероятно, захотите использовать Django REST Framework и его сериализаторы, а не простые формы Django.
Чистые данные запускаются до is_valid, потому что clean является одним из многих методов, которые django запускает для проверки вашей формы
, поскольку вы очищаете только одно поле, используйте чистое для этого поля
class BokningForm(ModelForm)
...
def clean_pumpstart(self):
data = self.cleaned_data['pumpStart']
data = datetime.strptime(data , "%Y-%m-%d %H:%M")
return data
в ваших взглядах, может быть, это может тренироваться
if form.is_valid():
bokning= form.save(commit=False)
... # Change your value
bokning.save()
EDIT: Получил некоторую хорошую информацию в другом посте ... попробуйте использовать чистый метод внутри модели, похоже, что это работает сначала
class Bokning(models.Model):
def clean(self):
...
Источник: Django: метод очистки модели, называемый до очистки формы
clean_pumpstart
, поэтому его слишком поздно изменить.
– Alasdair
13 July 2018 в 13:50