Форма не проходит валидацию, не сохраняет объект в БД
Текста ошибки как такового нет, просто не сохраняется форма. Не проходит валидацию.
Вот сгенерированный формой объект, проверил метод реквеста вывел в начале
models.py
class Film(models.Model):
title = models.CharField('Название фильма', max_length=255)
#slug = models.SlugField(unique=True, max_length=55)
description = models.TextField('Описание фильма', null=True)
main_image = models.ImageField('Постер', upload_to='images/film_poster')
image1 = models.ImageField('Первое изображение', upload_to='images/')
image2 = models.ImageField('Второе изображение', upload_to='images/')
image3 = models.ImageField('Третее изображение', upload_to='images/')
image4 = models.ImageField('Четвёртое изображение', upload_to='images/')
image5 = models.ImageField('Пятое изображение', upload_to='images/')
trailer_link = models.URLField('Ссылка на трейлер')
two_d = models.BooleanField('2Д',default=False)
three_d = models.BooleanField('3Д',default=False)
i_max = models.BooleanField('I_MAX', default=False)
duration = models.CharField('Длительность фильма', max_length=55)
first_night = models.DateField(verbose_name='Дата премьеры', null=True)
vievs.py
def film_page(request):
error = ''
if request.method == 'POST':
form = FilmForm(request.POST)
if form.is_valid():
form.save()
return redirect('film_list')
else:
error = 'Что-то пошло не так'
form = FilmForm()
data = {
'form': form,
'error': error,
}
return render(request, 'adminLte/film/film_page.html', data)
Html шаблон
{% extends 'adminLte/base.html' %}
{% block film %}
<li class="nav-item">
<a href="{% url 'film_list' %}" class="nav-link active">
<i class="fas fa-film"></i>
<p>
Фильмы
</p>
</a>
</li>
{% endblock %}
{% block content_title %}
<h1 class="m-0">Форма добавления фильма</h1>
{% endblock %}
{% block main_content %}
<span>{{ error }}</span>
<div class="features flex-fill">
<div class="row m-3">
<div class="container">
<form method="post">
{% csrf_token %}
<div class="form-group">
<label for="FilmNameInput"><h4>Название фильма</h4></label>
{{ form.title }}
</div>
<div class="form-group">
<label for="FilmTextInput"><h4>Описание фильма</h4></label>
{{ form.description }}
</div>
<div class="form-group">
<label for="FilmPoster"><h4>Постер фильма</h4></label>
{{ form.main_image }}
</div>
<label for="FilmGallery"><h4>Галерея фильма</h4></label>
<div class="row" id="FilmGallery">
<div class="col">
{{ form.image1 }}
</div>
<div class="col">
{{ form.image2 }}
</div>
<div class="col">
{{ form.image3 }}
</div>
<div class="col">
{{ form.image4 }}
</div>
<div class="col">
{{ form.image5 }}
</div>
</div>
<div class="container my-3 pl-0">
<h4>Тип фильма:</h4>
<div class="form-check form-check-inline">
{{ form.two_d }}
<label class="form-check-label" for="inlineCheckbox1">2D</label>
</div>
<div class="form-check form-check-inline">
{{ form.three_d }}
<label class="form-check-label" for="inlineCheckbox2">3D</label>
</div>
<div class="form-check form-check-inline">
{{ form.i_max }}
<label class="form-check-label" for="inlineCheckbox3">IMAX</label>
</div>
</div>
<!-- Ввод слаг-филда
<div class="col-lg-4 my-3 pl-0">
<label for="SlugName"><h4>Отображение ссылки</h4></label>
<input type="text" placeholder="введите slug" class="form-control" id="SlugName">
</div>
-->
<div class="col-lg-4 my-3 pl-0">
<label for="FilmDuration"><h4>Продолжительность сеанса</h4></label>
{{ form.duration }}
</div>
<div class="col-lg-6 my-3 pl-0">
<label for="TrailerName"><h4>Ссылка на youtube трейлер</h4></label>
{{ form.trailer_link }}
</div>
<div class="col-lg-6 my-3 pl-0">
<label for="FilmFirstNightDate"><h4>Дата премьеры</h4></label>
{{ form.first_night }}
</div>
<div class="container my-5">
<input class="btn btn-success" type="submit">
<a class="btn btn-danger" href="#" role="button">Отмена</a>
</div>
</form>
</div>
</div>
</div>
{% endblock %}
`
forms.py
from .models import Film
from django.forms import ModelForm, TextInput, DateInput, FileInput,URLInput, CheckboxInput, Textarea
class FilmForm(ModelForm):
class Meta:
model = Film
fields = ['title', 'description', 'main_image', 'image1', 'image2', 'image3', 'image4', 'image5', 'trailer_link',
'two_d', 'three_d', 'i_max', 'duration', 'first_night']
widgets = {
'title': TextInput(attrs={
'class': 'form-control',
'placeholder': 'Введите название фильма',
'id': 'FilmNameInput',
}),
'description': Textarea(attrs={
'textarea class': 'form-control',
'id': 'FilmTextInput',
'rows': '5',
'placeholder': 'Введите описание фильма',
}),
'main_image': FileInput(attrs={
'class': 'form-control-file',
'id': 'FilmPoster',
}),
'image1': FileInput(attrs={
'class': 'form-control-file col-md-3 pl-0'
}),
'image2': FileInput(attrs={
'class': 'form-control-file col-md-3'
}),
'image3': FileInput(attrs={
'class': 'form-control-file col-md-3'
}),
'image4': FileInput(attrs={
'class': 'form-control-file col-md-3'
}),
'image5': FileInput(attrs={
'class': 'form-control-file col-md-3'
}),
'two_d': CheckboxInput(attrs={
'class': 'form-check-input',
'type': 'checkbox',
'id': 'inlineCheckbox1',
'value': 'True',
}),
'three_d': CheckboxInput(attrs={
'class': 'form-check-input',
'type': 'checkbox',
'id': 'inlineCheckbox2',
'value': 'True',
}),
'i_max': CheckboxInput(attrs={
'class': 'form-check-input',
'type': 'checkbox',
'id': 'inlineCheckbox3',
'value': 'True',
}),
'duration': TextInput(attrs={
'placeholder': 'Пример: 1 час 53 минуты',
'class': 'form-control',
'id': 'FilmDuration',
}),
'trailer_link': URLInput(attrs={
'class': 'form-control',
'placeholder': 'Введите ссылку. Пример: https://www.youtube.com/watch...',
'id': 'TrailerName',
}),
'first_night': DateInput(attrs={
'type': "date",
'placeholder': "Введите дату премьеры",
'class': "form-control",
'id': "FilmFirstNightDate",
}),
}
`