У меня проблема с сохранением данных из формы, созданной с помощью bootstrap_datepicker_plus (https://pypi.org/project/django-bootstrap-datepicker-plus/)
Я использую Django 3.0.7
вот моя модель class:
class NightWindowPlatfrom(models.Model):
start_timestamp = models.DateTimeField(
null=True,
blank=True,
verbose_name=_('Start datetime'),
help_text=_('Night window start time')
)
end_timestamp = models.DateTimeField(
null=True,
blank=True,
verbose_name=_('End datetime'),
help_text=_('Night window end time')
)
platform = models.ForeignKey(
Platform,
blank=True,
null=True,
related_name='platform',
verbose_name=_('Platform NightWindow'),
help_text=_('Platform NightWindow for'),
on_delete=models.CASCADE
)
def __str__(self):
return self.platform.name
class Meta:
verbose_name = _('Night Window Not Alarmed to Heimdall')
verbose_name_plural = _('Night Windows')
и мой класс формы
class NightWindowForm(forms.ModelForm):
class Meta:
model = NightWindowPlatfrom
fields = ['start_timestamp', 'end_timestamp']
widgets = {
'start_timestamp': DateTimePickerInput(format='%Y-%m-%d %H:%M:%S'),
'end_timestamp': DateTimePickerInput(format='%Y-%m-%d %H:%M:%S'),
}
def clean(self):
cleaned_data = super(NightWindowForm, self).clean()
start_timestamp = cleaned_data.get("start_timestamp")
end_timestamp = cleaned_data.get("end_timestamp")
if start_timestamp and end_timestamp:
if end_timestamp < start_timestamp:
msg = u"End datetime cannot be earlier than start datetime!"
self.add_error('end_timestamp', msg)
return cleaned_data
DateTimePickerInput отображается правильно. Но когда я сохраняю, я получаю следующую ошибку:
I looked into Chrome devtools and I figured out that there is a difference in what was passed from forms earlier, when I used django-datetime-widget (https://pypi.org/project/django-datetime-widget/). Перестал пользоваться, так как несовместим с Django 3.
Вот отличия. То, что было раньше, с django -datetime-widget:
What I get now:
django - bootstrap -datepicker-plus
Раньше даты отправлялись в двух частях, теперь в одной.
Также вот что в документации Django говорится о DateTimeField
DateTimeField
class DateTimeField (auto_now = False, auto_now_add = False, ** options)
Дата и время, представленные в Python экземпляром datetime.datetime. Принимает те же дополнительные аргументы, что и DateField.
Виджет формы по умолчанию для этого поля - единственный DateTimeInput. Администратор использует два отдельных виджета TextInput с JavaScript ярлыками .
Может быть, это как-то связано с двумя отдельными виджетами TextInput?
Извините за длинный пост .