Django: ¿cómo validar las relaciones m2m?
Digamos que tengo unBasket
modelo y quiero validar que no más de5
Item
se 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?