Ma question est à peu près la même as this question, sauf que toutes les relations devraient être plusieurs-à-plusieurs.Comment décrire m2m triple-join table dans le modèle (Django)
Je les classes suivantes dans mon models.py (un peu simplifiée):
class Profile(models.Model):
# Extending the built in User model
user = models.ForeignKey(User, unique=True)
birthday = models.DateField()
class Media(models.Model):
title = models.CharField(max_length=200)
description = models.TextField(max_length=2000)
class Role(models.Model):
name = models.CharField(max_length=50)
Ce que je veux est une table de jonction qui ressemble à ceci:
CREATE TABLE `media_roles` (
`media_id` bigint(20) unsigned NOT NULL,
`profile_id` bigint(20) unsigned NOT NULL,
`role_id` bigint(20) unsigned NOT NULL
)
- John Doe - Réalisateur, Scénariste, Producteur
- Jane Doe - Producteur exécutif
- ...
C'est ce que je l'ai utilisé jusqu'à présent:
class MediaRole(models.Model):
media = models.ForeignKey(Media)
user = models.ForeignKey(Profile)
role = models.ForeignKey(Role)
Mais est-il pas de meilleure façon de le faire, pas impliquant la création d'une classe séparée dans le modèle?
Ceci est la solution standard. Que pensez-vous qui ne va pas avec? S'il vous plaît détailler les choses que vous n'aimez pas à ce sujet. –
Ce n'est pas que je pense qu'il y a quelque chose qui ne va pas. Je pensais juste qu'il y aurait un autre moyen qui me donnerait des fonctionnalités gratuites comme un standard ManyToManyField. – jmagnusson
Ce n'est pas ** un simple plusieurs-à-plusieurs. C'est un cas exceptionnel rare. –