DateTimeField постоянно говорит неверные дату / время - PullRequest
0 голосов
/ 20 февраля 2019

Я создал форму, которая работает гладко, но когда я добавил в DateTimeField, форма больше не будет считаться действительной.Я получаю сообщение об ошибке, указав неправильную дату / время;Тем не менее, я пробовал каждый формат ввода даты, и он все еще не работал.У меня есть ощущение, что проблема может лежать в моем поле формы для DateTimeField, но я не уверен, что именно проблема.Я был бы очень признателен за любую помощь.

class Lesson(models.Model):
    user = models.ForeignKey(User, null=True, default=None, related_name='lessons', on_delete=models.CASCADE)
    lesson_instrument = models.CharField(max_length=255, choices=instrument_list, blank=True)
    lesson_level = models.CharField(max_length=255, choices=level_list, blank=True)
    lesson_length = models.CharField(max_length=255, choices=length_list, blank=True)
    lesson_datetime = models.DateTimeField(null=True, blank=True)
    lesson_weekly = models.BooleanField(default=False, blank=True)

    def __str__(self):
        return self.lessons

    @receiver(post_save, sender=User)
    def create_user_lessons(sender, instance, created, **kwargs):
        if created:
            Lesson.objects.create(user=instance)

    @receiver(post_save, sender=User)
    def save_user_lessons(sender, instance, **kwargs):
        for lesson in instance.lessons.all():
            lesson.save()

forms.py

class LessonForm(forms.ModelForm):
    lesson_instrument = forms.ChoiceField(choices=instrument_list, widget=forms.Select(attrs={'class' : 'form-control', 'required' : 'True'}))
    lesson_level = forms.ChoiceField(choices=level_list, widget=forms.Select(attrs={'class' : 'form-control', 'required' : 'True'}))
    lesson_length = forms.ChoiceField(choices=length_list, widget=forms.Select(attrs={'class' : 'form-control', 'required' : 'True'}))
    lesson_datetime = forms.DateTimeField(widget=forms.DateTimeInput(attrs={'class': 'form-control', 'type':'datetime-local'}))
    lesson_weekly = forms.BooleanField(required=False)

    class Meta:
        model = Lesson
        fields = ('lesson_instrument', 'lesson_level', 'lesson_length', 'lesson_datetime', 'lesson_weekly')

views.py

def new_lesson(request):
    if request.method == 'POST':
        form = LessonForm(request.POST)

        if form.is_valid():
            lessons = form.save(commit=False)
            lessons.user = request.user
            lessons.save()
            messages.success(request,'Lesson successfully created')
            return redirect('/teacher/schedule')

        else:
            messages.error(request, 'Information entered was invalid')

    else:
        form = LessonForm()

    form = LessonForm()
    lessons = Lesson.objects.filter(user=request.user)
    context = {'form' : form, 'lessons': lessons}
    return render(request, 'teacher/new_lesson.html', context)

1 Ответ

0 голосов
/ 20 февраля 2019

Отметьте DATETIME_INPUT_FORMATS в вашем файле настроек.Если он не указан, по умолчанию будут отображаться значения здесь .

Затем добавьте аргумент format= в ваш виджет DateTimeInput (см. Документы Django ) для получения дополнительной информации о том, как это сделать), и убедитесь, что он соответствует одному из форматов, поддерживаемых настройкой DATETIME_INPUT_FORMATS.

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