Maison > développement back-end > Tutoriel Python > Comment « Related_name » améliore-t-il les relations inversées dans les modèles Django ?

Comment « Related_name » améliore-t-il les relations inversées dans les modèles Django ?

Mary-Kate Olsen
Libérer: 2024-12-16 11:15:14
original
843 Les gens l'ont consulté

How Does `related_name` Enhance Reverse Relationships in Django Models?

Présentation des noms associés dans les modèles Django

Lorsque vous travaillez avec des bases de données relationnelles dans Django, le paramètre Related_name joue un rôle central dans l'établissement de relations inverses . Cet article explore son utilisation et sa signification dans les champs ManyToManyField et ForeignKey.

Relations plusieurs-à-many avec des noms associés

Dans les relations ManyToManyField, Related_name définit le nom de l'attribut. permet d'accéder à la relation inverse sur le modèle associé. Par exemple, dans l'extrait de code suivant :

class Map(db.Model):
    members = models.ManyToManyField(User, related_name='maps',
                                     verbose_name=_('members'))
Copier après la connexion

Le Related_name='maps' spécifie que la relation inverse de l'utilisateur vers la carte sera accessible en tant que User.maps. En ajoutant le nom_connexe, la syntaxe devient plus intuitive et moins verbeuse par rapport au nom de relation inverse par défaut généré par Django (User.map_set).

Relations de clés étrangères avec noms associés

De même, Related_name peut être utilisé dans les relations ForeignKey. Cependant, dans ce cas, il définit le nom de l'attribut utilisé pour accéder à la relation inverse sur le modèle enfant. La spécification d'un nom_connexe n'est pas obligatoire, mais cela améliore la lisibilité et la facilité d'utilisation.

Fonctionnalités supplémentaires

En plus de personnaliser le nom de l'attribut de la relation inverse, Related_name offre d'autres fonctionnalités importantes :

  • Désactiver la relation inversée : En définissant Related_name sur " ", la relation inverse est explicitement désactivée.
  • Personnaliser la syntaxe de requête : Pour obtenir une syntaxe de requête personnalisée, les développeurs peuvent utiliser Related_name comme expression de filtre. Par exemple, User(name__in=current_user.maps.all().values_list('name', flat=True)) récupérera tous les utilisateurs qui sont membres de l'une des cartes associées à l'utilisateur actuel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal