Django/Python использует две модели в одном html
Я создал сайт фильмов, используя Django
, у меня есть две модели первая -
class Movie(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name="URL")
title_english = models.CharField(max_length=100)
descritpion = models.TextField(max_length=1000)
image = models.ImageField(upload_to="movies")
category = models.CharField(choices=CATEGORY_CHOICES,max_length=10)
language = models.CharField(choices=LANGUAGE_CHOICES,max_length=30)
status = models.CharField(choices=STATUS_CHOICES,max_length=10)
year_of_production = models.TextField(max_length=1000)
view_count = models.IntegerField(default=0)
и второй -
class Series(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name="URL")
title_english = models.CharField(max_length=100)
descritpion = models.TextField(max_length=1000)
image = models.ImageField(upload_to="movies")
category = models.CharField(choices=CATEGORY_CHOICES,max_length=10)
language = models.CharField(choices=LANGUAGE_CHOICES,max_length=30)
status = models.CharField(choices=STATUS_CHOICES,max_length=10)
year_of_production = models.TextField(max_length=1000)
view_count = models.IntegerField(default=0)
в view.py
def home(request):
user = request.user
# Movies_obj = models.Movie.objects.all().order_by('-id')[:10]
Movies_obj = models.Movie.objects.filter(category__in=['A']).order_by('-id')[:10]
Movies_main_slider = models.Movie.objects.filter(category__in=["M"]).order_by('-id')[:10]
Movies_main_suggest = models.Movie.objects.filter(status__in=["Suggest"]).order_by('-id')[:10]
serial_obj = Serial
seriali = models.Serial.objects.all().order_by('-id')[:10]
return render(request,'index.html',{'user':user,'movies':Movies_obj,"main_slider":Movies_main_slider,
"favorite":Movies_main_suggest,"serils":seriali})
def details(request,post_slug):
movies_obj = Movies
get_movie = Movies.objects.filter(slug = post_slug)
return render(request,'Movie/movie_details.html',{"movies":get_movie})
также есть два файла HTML
, index.html
и movie_details.html
, но когда я добавляю новый Series
не работает в movies_details.html
в movies_details
я использую
{% for i in movies %}
{{ i.descritpion }}
{% endfor %}
и когда я добавляю серии не работает, работает только модель фильма, какой лучший способ использовать две модели в одном html? Создать новый html для модели серии?
ваш сайт показывает фильмы только потому, что вы просто добавили фильмы в свой views.py
для решения проблемы вам нужно сделать эти изменения :
- добавьте серии в ваш
views.py
и выведите их в шаблон
def home(request):
user = request.user
# Movies_obj = models.Movie.objects.all().order_by('-id')[:10]
Movies_obj = models.Movie.objects.filter(category__in=['A']).order_by('-id')[:10]
Movies_main_slider = models.Movie.objects.filter(category__in=["M"]).order_by('-id')[:10]
Movies_main_suggest = models.Movie.objects.filter(status__in=["Suggest"]).order_by('-id')[:10]
serial_obj = Serial
seriali = models.Serial.objects.all().order_by('-id')[:10]
# add series here
Series_obj = models.Series.objects.all()
return render(request,'index.html',{'user':user,'movies':Movies_obj,"main_slider":Movies_main_slider,
"favorite":Movies_main_suggest,"serils":seriali,"series": Series_obj})
- Теперь вы можете просто отображать серии, добавив этот код в ваш
index.html
:
{% for serie in Series_obj %}
{{ serie.title }}
{% endfor %}
- Ок теперь для страницы подробностей я предлагаю добавить различные функции одна функция для подробностей фильма, другая для подробностей сериала и то же самое для .html файлов (например: movie_details.html и serie_details.html) Таким образом, функции должны выглядеть следующим образом:
def movieDetails(request,post_slug):
get_movie = Movie.objects.filter(slug = post_slug)
return render(request,'Movie/movie_details.html',{"movie":movie})
def serieDetails(request,post_slug):
get_serie = Series.objects.filter(slug = post_slug)
return render(request,'Movie/serie_details.html',{"serie":serie})
- теперь вы можете отображать информацию о фильме в
movie_details.html
вот так:
{{movie.title}}
{{movie.description}}
и то же самое для serie_details.html
:
{{serie.title}}
{{serie.description}}
не забудьте добавить movieDetails
и serieDetails
к вашему urls.py
также проверьте ваш код вы делаете некоторую ошибку вы называете класс фильмов как Movie
и затем вы вызываете его в views.py
как Movies
проверьте подобные ошибки и скажите, помогло ли вам это