_set est associé à une relation inverse sur un modèle.

Django permet d'accéder aux relations inverses sur un modèle. Par défaut, Django crée un gestionnaire RelatedManager) sur votre modèle pour gérer cela, nommé <model>_set, où <model> est le nom de votre modèle en minuscule.

Excellent lien sur StackOverflow ici :
https://stackoverflow.com/questions/25386119/whats-the-difference-between-a-onetoone-manytomany-and-a-foreignkey-field-in-d

Si nous avons ces modèles :

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    companies = models.ManyToManyField('Company', blank=True)

class Company(models.Model):
    name = models.CharField(max_length=255)

en Django,

"Peu importe quel modèle a le ManyToManyField, mais vous ne devriez le mettre que dans l'un des modèles - pas les deux.".

Donc, pour obtenir toutes les entreprises associées à un utilisateur, nous pouvons faire :
User.companies.all()
Mais l'inverse est un peu délicat. C'est-à-dire comment associer tous les utilisateurs à une entreprise.

Très facile. Obtenir la relation inverse à l'aide de _set
company.user_set.all()
renverra un QuerySet d' objets utilisateur appartenant à une société particulière. Par défaut, vous utilisez modelname_set pour inverser la relation, mais vous pouvez l'ignorer en fournissant un related_name comme paramètre lors de la définition du modèle, c'est-à-dire

class User(models.Model):
    username = models.CharField(max_length=100, unique=True)
    companies = models.ManyToManyField('Company', blank=True)

class Company(models.Model):
    name = models.CharField(max_length=255)

Ensuite, vous pouvez obtenir l'inverse sans utiliser _set comme ceci :
company.users.all()

Auteur: Mvondo bekey anael

ceo | founder
COMPETENCES
  • • Maitrise des environnements Unix, Linux, Mac, Windows, IOS et Android
  • • Programmation Orientée Objet : Python, Ruby, C++, Java, PHP, Js
  • • Certifier linux Lpi (101, 102, 202, 203, 301, 303)
  • • Certifier Adwords Professional , Certifier Ceh (6, 7, 8, 9, 10, 11)
  • • Maîtrise parfaite de : Docker, VMware sphère, Microsoft Hyper, Citrix, Virtual box,promox vm