["Значение '02 -05-2020 'имеет недопустимый формат. Оно должно быть в формате ГГГГ-ММ-ДД."] - PullRequest
0 голосов
/ 02 мая 2020

Я получаю вышеуказанную ошибку при попытке ввести дату 02-05-2020 в базу данных. Я хочу, чтобы введенный формат даты был ДД-ММ-ГГГГ, а не ГГГГ-ММ-ДД. Я использую DateField.

date = models.DateField()

1 Ответ

0 голосов
/ 02 мая 2020

Ваш вопрос не является подробным, но попробуйте что-то вроде этого:

import datetime

userinput = input("Enter Date DD-MM-YYYY") 
birthday = datetime.datetime.strptime(userinput, '%d-%m-%Y').date()
print(birthday)

Вывод:

2020-05-02

Вам необходимо указать формат ввода для пользователя, затем вы используете strptime() функция, чтобы преобразовать его в формат даты. См. input format выше и OUTPUT выше

РЕДАКТИРОВАТЬ

Вот как это сделать в Django:

Моделях .py

from django.db import models
import datetime

# Create your models here.
class Calculator(models.Model):
    deadline = models.DateField(null=True)

    def __str__(self):
         return self.deadline

forms.py

from .models import Calculator



class CalculatorForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        ''' remove any labels here if desired
        '''
    super(CalculatorForm, self).__init__(*args, **kwargs)


    # you can also remove labels of built-in model properties
    self.fields['deadline'].label = ''

    class Meta:
        model = Calculator
        fields = ['deadline']
        widgets = {
            'deadline': forms.DateInput(attrs={'class': 'datepicker', 'placeholder': 'mm-dd-YYYY'})
        }

views.py

from django.shortcuts import render,redirect
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse
from django.urls import reverse
from .forms import CalculatorForm
from .models import Calculator
import time
import datetime

# Create your views here.

def home(request):
    today = datetime.date.today()
    form = CalculatorForm(request.POST)
    # If this is a POST request then process the Form data

    if form.is_valid():
       instance = form.save()
       currentdate = datetime.date.today()
       userinput = str(instance.deadline) 
       birthday = datetime.datetime.strptime(userinput, '%d-%m-%Y').date()

       days = birthday - currentdate
       daysLeft = 'Days to your event is ' , days

       #return render(request, 'calculator/check.html', {'days':days})
       return HttpResponse(daysLeft)
    context = {
       'form': form,
    }

Я использовал простой калькулятор дат, чтобы показать, как это сделать в Django. Я надеюсь, что это решит вашу проблему

...