@Boldy

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

Например, есть модель Product, у которой есть SlugField
Как сделать так, чтобы при создании нового экзэмпляра Product генерировалась страничка /products/new_product_slug/? Что прописывать в url'ах и так далее?
  • Вопрос задан
  • 2320 просмотров
Решения вопроса 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 этой модели

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

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

Войти через центр авторизации
Похожие вопросы