Не могу сделать ссылку из админки на созданную новость с помощи reverse

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


class News(models.Model):
    title = models.CharField(max_length=150, verbose_name='Наименование')
    content = models.TextField(blank=True, verbose_name='Контент')
    created_at = models.DateTimeField(auto_now_add=True, verbose_name='Дата публикации')
    updated_at = models.DateTimeField(auto_now=True, verbose_name='Дата обновления')
    photo = models.ImageField(upload_to='photos/%Y/%m/%d/', verbose_name='Фото', blank=True)
    is_published = models.BooleanField(default=True, verbose_name='Опубликовано')
    category = models.ForeignKey('Category', on_delete=models.PROTECT, null=True, verbose_name='Категория')

    def get_absolut_url(self):
        return reverse('view_news', kwargs={"news_id": self.pk})

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'Новость'
        verbose_name_plural = 'Новости'
        ordering = ['-created_at']


class Category(models.Model):
    title = models.CharField(max_length=150, db_index=True, verbose_name='Наименование категории')

    def get_absolut_url(self):
        return reverse('category', kwargs={"category_id": self.pk})

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'Категория'
        verbose_name_plural = 'Категории'
        ordering = ['title']

get_absolute_url - не нужен.

index.html

<a href="{% url 'view_news' item.id %}" class="btn btn-primary">Подробнее...</a>

urls.py (через DetailView)

path('news/<int:pk>', view_news.as_view(), name='view_news')

urls.py (через функцию)

path('news/<int:pk>', view_news, name='view_news')

views.py (через DetailView)

from django.views.generic import DetailView

class view_news(DetailView):
model = News
template_name = 'news/view_news.html'
context_object_name = 'news_item'

views.py (через функцию)

def view_news(request, item_id):
# news_item = News.objects.get(pk=item_id)
news_item = get_object_or_404(News, pk=item_id)
return render(request, 'news/view_news.html', {"news_item": news_item})
Вернуться на верх