Je souhaite stocker des informations supplémentaires dans cette table de jointure ManyToMany créée automatiquement. Comment ferais-je cela à Django?
Dans mon cas, j'ai deux tableaux: "Employés" et "Projets". Ce que je veux stocker, c'est combien chacun des employés reçoit par heure de travail dans chacun des projets, car ces valeurs ne sont pas les mêmes. Alors, comment pourrais-je faire ça?
Ce qui m'est venu à l'esprit était de, au lieu de la méthode "ManyToManyField", créer explicitement une troisième classe/table pour stocker ces nouvelles informations et définir sa relation avec "Employés" et "Projets" en utilisant la méthode "ForeignKey". Je suis sûr que cela fonctionnera, mais est-ce la meilleure approche?
Voici un exemple de ce que vous souhaitez réaliser:
http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships
En cas de rupture du lien:
from Django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self): # __unicode__ on Python 2
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self): # __unicode__ on Python 2
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)