Django plusieurs-à-Plusieurs (m2m) Concernant le même modèle
J'aimerais créer un plusieurs-à-plusieurs relations à partir de et vers un utilisateur de la classe de l'objet.
J'ai quelque chose comme ceci:
class MyUser(models.Model):
...
blocked_users = models.ManyToManyField(MyUser, blank=True, null=True)
La question est de savoir si je peux utiliser la classe de référence à l'intérieur de lui-même. Ou dois-je utiliser "self"
l'insead de "MyUser"
dans le ManyToManyField
? Ou est-il une autre (et meilleure) façon de le faire?
- qu'est-ce que l'utilisation de la définition de plusieurs à plusieurs sur le même modèle?? quelqu'un svp
- Par exemple, si vous avez une structure arborescente. Maître de produit a subproduct etc etc.
Vous devez vous connecter pour publier un commentaire.
Techniquement, je suis sûr que "MyUser" ou "auto" ne fonctionne, tant que c'est une chaîne de caractères dans les deux cas. Vous juste ne pouvez pas passer
MyUser
, la classe réelle.Cependant, les docs toujours utiliser "auto". À l'aide de "soi" n'est pas seulement plus explicite sur ce qui se passe réellement, mais il est imperméable à la modification du nom de classe. Par exemple, si vous avez changé plus tard
MyUser
àSomethingElse
, vous serait alors nécessaire de mettre à jour toute référence à "MyUser" ainsi. Le problème, c'est que puisque c'est une chaîne de caractères, votre IDE ne sera pas vous avertir de l'erreur, donc il n'y a plus de chance de votre manque. À l'aide de "soi" fonctionne, peu importe ce que le nom est maintenant ou dans l'avenir.null=True
n'a aucun effet sur ManyToManyFieldsn'utilisez pas de 'soi' en ManyToManyField, il fera de vous un objet de lien les uns des autres, lorsque l'utilisation de django formulaire pour soumettre
et résultat: