Как исправить NoReverseMatch, когда я использовал метод предварительной выборки? - PullRequest
0 голосов
/ 27 сентября 2019

Обратитесь сюда для отслеживания **** django выдает ошибку, как это.Значение исключения: обратное для 'movie_details' с аргументами '(' ',)' не найдено.Попробовано 1 рисунков: ['movie \ / (? P [0-9] +) \ / $']

{% extends 'base.html' %}

{% block title %}
    {{object.first_name}} - {{object.last_name}}
{% endblock %}

{% block main %}
    <h1> {{object}} </h1>
    <h2>Actor</h2>
    <ul>
            <p>hello</p>
        {% for role in object.role_set.all %}
        
            <li>
                <a href="{%  url 'core:movie_details' role.movie.id %}">{{role.movie}} </a>
            </li>
        {%  endfor %}
    </ul>

    <h2>Writer</h2>
    <ul>
        {% for movie in objects.writing_credits.all %}
            <li>
                <a href="{% url 'core:movie_details' movi.id %}"> {{movie}} </a>
            </li>
        {% endfor %}
    </ul>

    <h2>Director</h2>
    <ul>
        {% for movie in object.directed.all %}
            <li>
                <a href="{% url 'core:movie_details' movi.id %}"> {{movie}} </a>
            </li>
        {% endfor %}
    </ul>
{% endblock %}

коды в model.py

from django.db import models

class PersonManager(models.Manager):
    def all_with_prefetch_movies(self):
        qs = self.get_queryset()
        return qs.prefetch_related('directed','writing_credits','roll_set__movie')

class Person(models.Model):
    first_name = models.CharField(max_length=140)
    last_name = models.CharField(max_length=140)
    born = models.DateField()
    died = models.DateField(null=True,blank=True)

    objects = PersonManager()

Коды в views.py

class MovieDetail(DetailView):
    model = Movie
    queryset = Movie.objects.all_with_prefetch_persons()


class PersonDetail(DetailView):
    queryset = Person.objects.all_with_prefetch_movies()

отображение URL в urls.py

шаблон URL, упомянутый ниже

urlpatterns = [
    path('movies/', MovieList.as_view(), name='movie_list'),
    path('movie/<int:pk>/', MovieDetail.as_view(), name='movie_details'),
    path('person/<int:pk>/', PersonDetail.as_view(), name='person_details'),
]
...