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
747 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!

source:php.cn
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