#django #django-models #datefield
#django #django-модели #поле даты
Вопрос:
Это то, что у меня есть:
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.Ошибка проверки: [«» значение имеет недопустимый формат даты. Это должно быть в формате ГГГГ-ММ-ДД «.]
Как я могу это исправить?
Комментарии:
1. в теге ввода даты я сомневаюсь, что / by the closing > помогает. если ни это, ни ответ Cesar17 не помогают, то, возможно, для целей тестирования попробуйте включить formnovalidate во входной тег, чтобы увидеть, присутствует ли ошибка проверки в реализации, а не во входных данных.
Ответ №1:
Если вам не нужно добавлять дату, когда она была впервые создана, то вы должны указать, что это не требуется с помощью «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