@Animkim
Питон вокруг меня

Django дерево категорий как ограничить вложенность?

class Category(models.Model):
    parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
    title = models.CharField(max_length=50)

Есть такая модель, заранее известно что максимальная вложенность не больше трех.
  • Вопрос задан
  • 1216 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Во-первых, использовать MPTT. Во-вторых, переопределить метод save() и проверять в нём атрибут level родителя.

class Category(mptt.models.MPTTModel):
    parent = mptt.models.TreeForeignKey('self', null=True, blank=True, related_name='children')
    title = models.CharField(max_length=50)

    def save(self, *args, **kwargs):
        if parent.level == 3:
            raise ValueError(u'Достигнута максимальная вложенность!')
        super(Category, self).save(*args, **kwargs)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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