2012-05-07 11 views
7

Tengo una relación de muchos a muchos en un modelo Django (1.4).¿Imponer al menos un valor en una relación muchos a muchos, en Django?

class UserProfile(models.Model): 
    foos = models.ManyToManyField(Foo) 

Quiero hacer cumplir que cada Usuario (Perfil) tiene al menos un Foo. Foos puede tener cero o más usuarios (perfiles) s.

Me encantaría que esto se aplique en los niveles de modelo y de administrador, pero solo aplicarlo en el administrador sería suficiente.

Si entiendo correctamente, 'muchos' en Django-speak es cero o más.

Quiero una relación ManyToOneOrMore. ¿Cómo puedo hacer esto?

Gracias,

Chris.

Respuesta

4

No se puede aplicar esto en el nivel de modelo como @Greg detalles, pero puede aplicarlo en un formulario simplemente haciendo el campo requerido. Esto no evitará que alguien acceda desde el nivel de shell a crear manualmente un perfil de usuario sin un foo, pero forzará a cualquiera que use un método de creación basado en el navegador.

7

Desafortunadamente, no creo que esto sea posible a nivel de modelo porque muchos datos ManyToMany se guardan por separado de otros campos del modelo. Debería poder aplicarlo en el nivel de administrador especificando un formulario personalizado y escribiendo un método clean() en el formulario.

Cuestiones relacionadas