Метод get_absolute_url
Метод get_absolute_url определяется в модели и возвращает
строку с URL-адресом для конкретного экземпляра. Этот метод
особенно полезен для генерации ссылок на объекты в шаблонах
и административной панели Django. Метод не принимает никаких
аргументов и обычно использует функцию reverse для
построения URL на основе имени маршрута и параметров объекта.
Синтаксис
from django.db import models
from django.urls import reverse
class ModelName(models.Model):
# поля модели
def get_absolute_url(self):
return reverse('url_name', kwargs={'pk': self.pk})
Пример
Давайте создадим модель Article с методом get_absolute_url,
который возвращает URL для просмотра статьи:
from django.db import models
from django.urls import reverse
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def get_absolute_url(self):
return reverse('article_detail', kwargs={'pk': self.pk})
Пример
Рассмотрим использование метода get_absolute_url для
получения URL конкретной статьи:
from myapp.models import Article
# Получаем статью с id=1
article = Article.objects.get(pk=1)
# Получаем абсолютный URL
url = article.get_absolute_url()
print(url)
Результат выполнения кода:
"/articles/1/"
Пример
Метод get_absolute_url часто используется в шаблонах
для создания ссылок на объекты. Рассмотрим пример с использованием
альтернативных полей для построения URL:
from django.db import models
from django.urls import reverse
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
def get_absolute_url(self):
return reverse('category_detail', kwargs={'slug': self.slug})
Теперь получим URL для категории:
from myapp.models import Category
# Получаем категорию
category = Category.objects.get(slug='django')
# Получаем абсолютный URL
url = category.get_absolute_url()
print(url)
Результат выполнения кода:
"/categories/django/"
Смотрите также
-
метод
save,
который сохраняет объект в базу данных -
метод
delete,
который удаляет объект из базы данных -
метод
clean,
который выполняет валидацию полей модели -
метод
refresh_from_db,
который обновляет объект из базы данных