Django: como validar relacionamentos m2m?

Digamos que eu tenho umBasket modelo e quero validar que não mais do que5 Items podem ser adicionados a ele:

class Basket(models.Model):
    items = models.ManyToManyField('Item')

    def save(self, *args, **kwargs):
        self.full_clean()
        super(Basket, self).save(*args, **kwargs)

    def clean(self):
        super(Basket, self).clean()
        if self.items.count() > 5:
            raise ValidationError('This basket can\'t have so many items')

Mas ao tentar salvar umBasket a RuntimeError é lançado porque a profundidade máxima da recursão foi excedida.

O erro é o seguinte:

ValueError: "<Basket: Basket>" needs to have a value for field "basket" before this many-to-many relationship can be used.

Isso acontece noif self.items.count() > 5: linha.

Aparentemente, as complexidades do Django simplesmente não permitem que você valide relacionamentos m2m ao salvar um modelo. Como posso validá-los então?

questionAnswers(2)

yourAnswerToTheQuestion