Моя форма django никогда не является валидной. Почему это происходит?
У меня есть приложение django, в котором я хочу, чтобы пользователь мог загружать видео. Мое представление выглядит следующим образом:
class CreateVideo(View):
def post(self, request):
videos = models.Video.objects.all().order_by('-created_on')
form = forms.VideoUploadForm(request.POST)
if form.is_valid():
print('form is valid')
video = form.save(commit=False)
video.save()
print('video uploaded')
else:
print('form not valid')
context = {
'video_list': videos,
'form': form,
}
return redirect('index')
def get(self, request):
videos = models.Video.objects.all().order_by('-created_on')
form = forms.VideoUploadForm()
context = {
'video_list': videos,
'form': form,
}
return render(request, 'videos/upload_video.html', context)
Моя форма:
class VideoUploadForm(forms.ModelForm):
class Meta:
model = Video
fields = ['title', 'description', 'file']
и модель:
class Video(models.Model):
video_id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False,
unique=True
)
title = models.CharField(max_length=50, null=True)
description = models.CharField(max_length=500, null=True)
file = models.FileField(null=True)
created_on = models.DateTimeField(default=timezone.now, null=True)
at = models.ForeignKey(at, on_delete=models.CASCADE, null=True)
и мой шаблон:
<div>
<form method="post">
{% csrf_token %}
{{ form | crispy }}
<button>Submit!</button>
</form>
</div>
Когда я нажимаю кнопку submit, я получаю: форма не действительна в терминале. Я хочу, чтобы форма была создана, но она просто не действительна. Где проблема?
Устанавливаете ли вы поля title, description и file при отправке формы? Пока что они считаются обязательными для вашей формы, пока вы не установите blank=True
на поля модели (подробнее об этом можно прочитать здесь: https://stackoverflow.com/a/8609425/7196167).