Как сделать поля даты в моделях не обязательными, используя в html тип ввода = дата - PullRequest
1 голос
/ 02 апреля 2019

Вот что у меня есть:

models.py

class Comic(models.Model):

title = models.CharField(max_length=255, blank=False)
date_of_purchase = models.DateField(blank=True, null=True)

views.py

def add_to_my_collection(request):
    if request.method == 'POST':
        comic = Comic.objects.create(
            title = request.POST['title'].capitalize(), 
            date_of_purchase = request.POST['date_of_purchase'] 
        )

file.html

<form class="create_edit" action="/add_to_my_collection" method="POST" enctype="multipart/form-data">
     {% csrf_token %}
          <div class="form-group">
              <label for="title">Title:</label>
              <input name="title" type="text" class="form-control" id="title" value="{{comic.title}}">
          </div>

          <div class="form-group">
              <label for="date_of_purchase">Date of purchase:</label>
              <input name="date_of_purchase" type="date" id="date_of_purchase" class="form-control"/>
          </div> 

          <div class="sub_but">
              <button type="submit" class="btn btn-primary btn-block">Submit</button>
          </div>
</form> 

Как видно на моделях, поле даты может быть пустым. Но если я запускаю его без заполнения поля даты, я получаю сообщение об ошибке:

django.core.exceptions.ValidationError: ["'' значение имеет недопустимый формат даты. Оно должно быть в формате ГГГГ-ММ-ДД."]

Как я могу это исправить?

1 Ответ

0 голосов
/ 02 апреля 2019

Если вам не нужно добавлять дату, когда она впервые создается, то вы должны указать, что она не требуется с "auto_now_add = False".Пожалуйста, обратите внимание на источник:

models.py

date_of_purchase = models.DateField(blank=True, null=True,auto_now_add=False)

Источник https://docs.djangoproject.com/en/2.1/ref/models/fields/#datetimefield

...