Django: ¿cómo validar las relaciones m2m?

Digamos que tengo unBasket modelo y quiero validar que no más de5 Itemse le pueden agregar s:

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')

Pero cuando intentas salvar unBasket a RuntimeError se lanza porque se excede la profundidad máxima de recursión.

El error es el siguiente:

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

Sucede en elif self.items.count() > 5: línea.

Aparentemente, las complejidades de Django simplemente no le permitirán validar las relaciones m2m al guardar un modelo. ¿Cómo puedo validarlos entonces?

Respuestas a la pregunta(2)

Su respuesta a la pregunta