246 votes

Comment rendre facultatif le champ plusieurs-à-plusieurs dans Django?

Lorsque vous avez plusieurs-à-plusieurs relations (related_name, pas through) et que vous essayez d'utiliser l'interface d'administration, vous devez entrer dans l'une des relations, même si elle n'existe pas pour vous de créer la première entrée.

Je suis en création d'une application qui est un organisateur de l'événement. Imaginons que nous ayons Event et Group modèles, lié avec plusieurs-à-plusieurs relations.

Django related_name crée une autre table avec les indices des deux autres tables.
Mais je ne vois pas pourquoi cette table supplémentaire a à être peuplée.

Si je travaille avec la base de données via phpMyAdmin, je peux créer un Group sans inscription un Event, puisque la connexion entre les deux est que grâce à une table séparée, et il n'existe pas de valeur de base de données de l'application à un niveau donné.

Comment puis-je faire l'interface d'admin de ce rendre compte?
Comment puis-je faire plusieurs-à-plusieurs champ facultatif dans Django?

413voto

Ludwik Trammer Points 7794

Votre question n’est pas très claire pour moi, mais si vous souhaitez pouvoir spécifier une relation ManyToMany, sans la rendre obligatoire, utilisez simplement blank=True :

 class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X