NoReverseMatch с generi c DeleteView - PullRequest
       4

NoReverseMatch с generi c DeleteView

0 голосов
/ 22 апреля 2020

Я не могу понять, почему я получаю NoReverseMatch при попытке использовать это представление. Мне бы хотелось, чтобы общие c представления работали, потому что кажется, что для выполнения одной и той же задачи гораздо меньше кода.

views.py

from django.views.generic import DetailView, ListView, UpdateView, CreateView, DeleteView
from django.urls import reverse_lazy
from .models import *

class ProductDeleteView(DeleteView):
    model = Product
    success_url = reverse_lazy('homepage_view')

models.py

from django.db import models
from django.urls import reverse
from autoslug import AutoSlugField

class Product(models.Model):
    name = models.CharField(max_length=50)
    slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='name')

    def get_delete_url(self):
        return reverse('product_delete_view', args=(self.slug,))

    class Meta:
        verbose_name_plural = "Products"

    def __str__(self):
        return self.name

urls.py

from . import views
from django.urls import path, include
from django.views.generic import TemplateView

app_name = "main"

urlpatterns = [
    path('product/delete/<slug:slug>/', views.ProductDeleteView.as_view(), name='product_delete_view'),
]

шаблон

<p>
    <a class="btn btn-primary" href="{{product.get_delete_url}}">Delete Product</a>
</p>

1 Ответ

1 голос
/ 22 апреля 2020

Вы должны добавить имя приложения также в методе get url для удаления

 def get_delete_url(self):
        return reverse('main:product_delete_view', args=(self.slug,))
...