Django - аргумент strptime () 1 должен быть str, а не None - PullRequest
0 голосов
/ 31 марта 2020

В моем приложении пользователь вводит свое имя, адрес электронной почты, дату встречи и час встречи, и я хочу сохранить всю эту информацию в своей базе данных. Но приложение не работает. Я получаю TypeError: strptime() argument 1 must be str, not None, но не знаю, в чем причина. Все кажется правдой.

models.py:

def index(request):
    context = {
        'schedules': Schedule.objects.all()
    }

    participant_name = request.POST.get('name')
    participant_email = request.POST.get('email')
    meeting_date = request.POST.get('date')
    meeting_hour = request.POST.get('hour')
    converted_meeting_date = datetime.strptime(request.POST.get('date'), "%m-%d-%Y")
    converted_meeting_hour = datetime.strptime(request.POST.get('hour'), "%H:%M")
    if request.POST.get('participant_email'):
        Schedule.objects.create(
            participant_name = request.POST.get('name'),
            participant_email = request.POST.get('email'),
            meeting_date = converted_meeting_date,
            meeting_hour = converted_meeting_hour
        )
    return render(request, 'index.html', context)

models.py:

class Schedule(models.Model):
    participant_name = models.CharField(max_length=100)
    participant_email = models.CharField(max_length=100)
    meeting_date = models.DateField()
    meeting_hour = models.TimeField()
    is_scheduled = models.BooleanField(default=False)

    def __str__(self):
        return self.participant_name

1 Ответ

0 голосов
/ 31 марта 2020

Вам необходимо проверить, не равны ли Nе Meeting_date и meeting_hour None, а также вам нужно преобразовать их в строку, прежде чем применять к ним strptime.

def index(request):
    context = {
        'schedules': Schedule.objects.all()
    }

    participant_name = request.POST.get('name')
    participant_email = request.POST.get('email')
    meeting_date = str(request.POST.get('date'))
    meeting_hour = str(request.POST.get('hour'))
    converted_meeting_date = datetime.strptime(request.POST.get('date'), "%m-%d-%Y").date() if meeting_date else None
    converted_meeting_hour = datetime.strptime(request.POST.get('hour'), "%H:%M").time() if meeting_hour else None
    if request.POST.get('participant_email'):
        Schedule.objects.create(
            participant_name = request.POST.get('name'),
            participant_email = request.POST.get('email'),
            meeting_date = converted_meeting_date,
            meeting_hour = converted_meeting_hour
        )
    return render(request, 'index.html', context)
...