DateTimeField вместе с проблемой bootstrap_datepicker_plus - PullRequest
0 голосов
/ 18 июня 2020

У меня проблема с сохранением данных из формы, созданной с помощью 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 отображается правильно. Но когда я сохраняю, я получаю следующую ошибку: error

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: 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?

Извините за длинный пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...