Задать вопрос
nuBacuk
@nuBacuk
Python/Linux

Как сделать автоинкримент в django?

Как правильно сделать автоинкримент в django?
Нужно чтобы у каждой категории был свой счетчик статей.
  • Вопрос задан
  • 572 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега PostgreSQL
Седой и строгий
articles_in_category = Article.objects.filter(category=category).count()

или

category.articles_set.count()
Ответ написан
nuBacuk
@nuBacuk Автор вопроса
Python/Linux
Я сделал так.

В модели категории добавил поле

class Category(models.Model):
    title = models.CharField(verbose_name='Название категории', max_length=60)
    slug = models.SlugField(verbose_name='URL',unique=True)
    i = models.IntegerField(default = 1)

    def __str__(self):
        return str(self.title)


и так как у меня форма создания для постов. То получилось следующее.
В форму добавил.
if form.is_valid():
            form_valid = form.save(commit=False)        #не сохраняем заполненную форму
            category_post = Category.objects.get(slug=slug)  #получаем категорию
            form_valid.number_starts = category_post.i    #Номер поста в категории
            category_post.i += 1                          #инкремент для категории
            category_post.save()                          #сохранение
            form_valid.author = request.user.get_full_name()
            form_valid.save()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
un1t
@un1t
Навесь сигнал post_save,post_delete на статью. В обработчике обновляй счетчик.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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