Формы Django не сохраняются в Admin
У меня есть проект Django, где у нас должна быть страница с формой, в которой мы должны заполнить информацию и сохранить ее в админке.
HTML (форма)
VIEWS.PY
from django.shortcuts import render, redirect
from .models import *
from .forms import MovieForm, SerieForm
def movie(request):
movie = Movie.objects.all()
serie = Serie.objects.all()
pages = {'movies': movie, 'series': serie}
return render (request, 'filme/base.html', pages)
#detail series
def series_detail(request, id):
serie = Serie.objects.get(id=id)
pages = {
"serie": serie
}
return render (request, 'filme/serie_details.html')
def movies_detail(request, id):
movie = Movie.objects.get(id=id)
pages = {
"movie": movie
}
return render (request, 'filme/movie_details.html')
def add_movies(request):
if request.method == "POST":
form = MovieForm(request.POST, request.FILES)
#print('this is post')
if form.is_valid():
form.save()
return redirect('movie')
else:
return render(request, 'filme/addmovies.html', {'form': form})
else:
form= MovieForm()
return render(request, 'filme/addmovies.hmtl')
if form.is_valid():
form.save()
return redirect('movie_details')
else:
form = MovieForm()
return render(request, 'filme/addmovies.html', {'form': form})
URLS.PY
from django.urls import path
from . import views
#app_name= "filme"
urlpatterns = [
path('', views.movie, name="movie"), #nome do def do views.py
path('movie', views.movie),
path('movies_details/<int:id>', views.movies_detail, name="movie_details"),
path('serie_details/<int:id>', views.series_detail, name="series_details"),
path('addseries/<int:id>', views.add_series, name="add_series"),
path('filme/addmovies/<int:Movie_id>', views.add_movies, name='add_movies')
]
MODELS.PY
from django.db import models
# Create your models here.
CATEGORY_CHOICES = (
('ACTION', 'AC'),
('DRAMA', 'DR'),
('CRIME', 'CR'),
('HORROR', 'HO'),
('SCI-FI', 'SF'),
('MYSTERY', 'MY'),
('FAMILY', 'FA'),
('COMEDY', 'CO'),
('FANTASY', 'FY'),
)
CLASSIFICATION_CHOICES = (
('1/10', '1'),
('2/10', '2'),
('3/10', '3'),
('4/10', '4'),
('5/10', '5'),
('6/10', '6'),
('7/10', '7'),
('8/10', '8'),
('9/10', '9'),
('10/10', '10'),
)
SEASON_CHOICES = (
('1', '1'),
('2', '2'),
('3', '3'),
('4', '4'),
('5', '5'),
('6', '6'),
('7', '7'),
('8', '8'),
('9', '9'),
)
class Movie(models.Model):
title = models.CharField(max_length=100)
description = models.TextField(max_length=1000)
image = models.ImageField(upload_to='assets')
category = models.CharField(choices=CATEGORY_CHOICES, max_length=8)
classification = models.CharField(choices=CLASSIFICATION_CHOICES, max_length=6)
date = models.DateField()
pactors = models.TextField(max_length=1000)
sactors = models.TextField(max_length=1000)
producer = models.TextField(max_length=50)
trailer_url = models.URLField(max_length=500)
def __str__(self):
return self.title
FORMS.PY
from django import forms
from .models import Movie, Serie
from django.forms import ModelForm
class MovieForm(ModelForm): #if not work switch to MovieForm
title = forms.TextInput() #delete till line 11 if not working
description = forms.TextInput()
date = forms.DateField()
image = forms.ImageField()
category = forms.CharField()
classification = forms.CharField()
pactors = forms.TextInput()
sactors = forms.TextInput()
producer = forms.TextInput()
trailer_url = forms.URLField()
class Meta:
model= Movie
fields = ['title', 'description', "image","category","classification","date","sactors","producer","trailer_url"]
ADMIN.PY
from django.contrib import admin
from filme.models import Movie, Serie
from .forms import MovieForm
# Register your models here.
class MovieAdmin(admin.ModelAdmin): #remove if not working
form = MovieForm
list_display=['title']
admin.site.register(Movie, MovieAdmin)
admin.site.register(Serie)
Я уже второй раз начинаю этот проект, потому что в другом возникла та же проблема, и он стал настолько запутанным, что пришлось начинать заново. Я уже пробовал и уроки на youtube, и спрашивал у ChatGPT, ничего не решает. Модель "Фильмы" отображается на странице администратора, но если я заполняю форму и нажимаю "Добавить", она перенаправляет меня на ту же страницу формы, а раздел "Фильмы" в администраторе остается пустым. Пожалуйста, помогите мне, мне нужно сделать это до понедельника, я в отчаянии :')
У вас опечатка в представлении add_movies
при рендеринге html-страницы (неправильное написание html), должно быть addmovies.html
, а не addmovies.hmtl
У вас return render(request, 'filme/addmovies.hmtl')
вместо return render(request, 'filme/addmovies.html')
.