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 для решения проблемы вам нужно сделать эти изменения :

  1. добавьте серии в ваш 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})

  1. Теперь вы можете просто отображать серии, добавив этот код в ваш index.html:
{% for serie in Series_obj %}
    {{ serie.title }}
{% endfor %}
  1. Ок теперь для страницы подробностей я предлагаю добавить различные функции одна функция для подробностей фильма, другая для подробностей сериала и то же самое для .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})
  1. теперь вы можете отображать информацию о фильме в movie_details.html вот так:
{{movie.title}}
{{movie.description}}

и то же самое для serie_details.html:

{{serie.title}}
{{serie.description}}

не забудьте добавить movieDetails и serieDetails к вашему urls.py также проверьте ваш код вы делаете некоторую ошибку вы называете класс фильмов как Movie и затем вы вызываете его в views.py как Movies проверьте подобные ошибки и скажите, помогло ли вам это

Вернуться на верх