NoReverseMatch в... (Django)

Получение ошибки:

Не найден реверс для 'topping' с аргументами '('',)'. 1 pattern(s) tried: ['topping/(?P<toppings_id>[0-9]+)/$']. Метод запроса: GET URL запроса: http://127.0.0.1:8000/pizzas/. Версия Django: 3.2.8 Тип исключения: NoReverseMatch Значение исключения:
Не найден реверс для 'topping' с аргументами '('',)'. Проверен 1 шаблон(ы): ['topping/(?P<toppings_id>[0-9]+)/$']

.

admin.py:

from django.contrib import admin

from .models import Pizzas, Toppings

admin.site.register(Pizzas)
admin.site.register(Toppings)

models.py:

from django.db import models

class Pizzas(models.Model):
    """A Pizza for the menu."""
    pizza = models.TextField()

    def __str__(self):
        """Return string of model."""
        return self.pizza

class Toppings(models.Model):
    """A topping for each pizza."""
    pizza = models.ForeignKey(Pizzas, on_delete=models.CASCADE)
    topping = models.TextField()

    class Meta:
        verbose_name_plural = 'toppings'

        def __str__(self):
            return f"{self.topping}"

views.py:

from django.shortcuts import render

from .models import Pizzas

def index(request):
    """The home page for pizzeria."""
    return render(request, 'pizzas/index.html')


def pizzas(request):
    """Show all pizzas."""
    pizzas = Pizzas.objects.all()
    context = {'pizzas': pizzas}
    return render(request, 'pizzas/pizzas.html', context)


def topping(request, toppings_id):
    """Show each topping for a pizza."""
    pizzas = Pizzas.objects.get(id=toppings_id)
    toppings = pizzas.topping_set.all()
    context = {'pizzas': pizzas, 'toppings': toppings}
    return render(request, 'pizzas/toppings.html', context)

project urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pizzas.urls')),
]

app urls.py:

from django.urls import path

from . import views

app_name = 'pizzas'

urlpatterns = [
    # Home page
    path('', views.index, name='index'),
    # Pizza menu
    path('pizzas/', views.pizzas, name='pizzas'),
    # Detail page for Toppings.
    path('pizzas/<int:toppings_id>/', views.topping, name='topping'),
]
Шаблон

pizzas.html:

{% extends "pizzas/base.html" %}

{% block content %}

  <p>Pizzas</p>

  <ul>
      {% for pizza in pizzas %}
        <li>
          <a href="{% url 'pizzas:topping' toppings.id %}">{{ pizza }}</a>{{ pizza }}
        </li>
      {% empty %}
        <li>No pizzas.</li>
      {% endfor %}
  </ul>

{% endblock content %}

Я включил то, что, по моему мнению, является важным. Я начинающий программист, так что если я что-то упустил в этом сообщении, дайте мне знать. Я изо всех сил старался прочитать о причинах NoReverseMatch, но ни одно из решений не помогло решить проблему. Функция pizzas получает все пиццы и соответствующие начинки и хранит их в базе данных, которая присваивает начинкам идентификатор, который затем должен быть получен через get(), вот как я это понимаю.

Не знаю, как выглядит ваша модель, но если топпинги - это поле в модели Pizza (логично, если это так), вы должны получить к нему доступ так же, как к любому полю в модели:

pizza.toppings.id
Вернуться на верх