@Boldy

Как генерировать отедльную страницу для модели в django?

Например, есть модель Product, у которой есть SlugField
Как сделать так, чтобы при создании нового экзэмпляра Product генерировалась страничка /products/new_product_slug/? Что прописывать в url'ах и так далее?
  • Вопрос задан
  • 2322 просмотра
Решения вопроса 1
@FireGM
Во-первых, переопределить метод save у модели. Чтоб при сохранении, создавался слаг из чего-то.
Для этого использую https://github.com/un33k/python-slugify
class Product(models.Model):
    title = models.CharField(max_lenght=220)
    slug = models.SlugField(unique=True, blank=True)
    
    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Product, self).save(*args, **kwargs)

А потом уже определять урлс:
url(r'/products/(?P<product>[\w-+_]+)/', 'product.views.product', name='product')

А во вьюхе уже получать продукты по полю слага. Естественно, поле лучше сделать уникальным. Я обычно просто id дописываю в конце через '_'.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
winordie
@winordie
Лучшая документация -- исходники
Полагаю что то по типу:
url(r'^products/(?P<product_slug>[\w-]*)/$', self.detail_view.as_view(), name='detail'),

где в <product_slug>
product -- имя модели
slug -- имя SlugField этой модели

Посмотрите -- это, и вообще прочитайте этот урок если еще этого не сделали, там все очень хорошо расписано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы