7
votes

Pourquoi utiliser l'argument "à travers" pour plusieurs tomanyfield dans les modèles Django?

regarder à travers les documents Django et essayer de déterminer l'utilisation de l'argument "à travers". Voici un lien vers le doc .

L'exemple: xxx

Pourquoi l'attribut" membres "du groupe est-il nécessaire? N'est-ce pas suffisamment élégance de membre de l'adhésion pour suivre la relation et accéder à ces informations?


0 commentaires

4 Réponses :


3
votes

La raison pour laquelle on le ferait, c'est que le groupe a un champ de cette relation, plutôt que de devoir suivre la relation à travers ses membres.

Si rien d'autre, cela peut rendre les requêtes d'écriture plus simples. À tout le moins, cela peut faciliter la vie d'un programmeur et que le code facilite la lecture. Un orj à optimiser suffisamment serait en mesure de générer des indices appropriés pour accélérer un tel accès (et sauf si je suis très erroné, Django fait effectivement cela; ou au moins au sud).


1 commentaires

Est-ce que cela rend ça plus efficace? Ou est-ce juste une question de commodité?



2
votes

C'est ainsi que, du groupe, vous pouvez accéder directement aux membres. Vous ne voulez pas nécessairement traiter les objets d'adhésion directement (l'utilisateur que je ne les vois même jamais). Vous voulez juste des groupes avec des informations supplémentaires stockées. Pensez à l'adhésion comme méta-données sur l'association entre personne et groupe.


3 commentaires

Mais quelle serait la différence entre les membres stockés en tant que plusieurs groupes de groupes plutôt que de suivre une relation à l'envers à l'adhésion?


Je suppose que ma vraie question est pourquoi ne veut-je pas faire face directement aux objets d'adhésion?


Parce que vous seriez généralement abordé avec un objet personne ou un objet de groupe à la suite d'une action de l'utilisateur. Un objet d'adhésion est très probablement de quelques données que vous allez parfois afficher, mais que vous ne seriez pas quelque chose que vous passeriez entre la vue / modèle.



10
votes

Je pense que vous pensez un peu trop littéralement à ce sujet. Disons que vous n'a pas utiliser via : xxx

django, dans les coulisses, crée essentiellement le modèle suivant pour vous: xxx

La raison de la création d'un modèle Modèle est d'ajouter des données supplémentaires que le modèle par défaut Django automatiquement crée ne serait pas Par défaut, mais que vous n'utilisez plus la valeur par défaut, vous devez dire à Django qui, en utilisant via . Fondamentalement, vous préservez l'API Django fournit à MétéoTomanFields.


0 commentaires

1
votes

Les tables via sont utilisées pour stocker des propriétés de la relation , dans ce cas, par exemple. La date A personne a rejoint un groupe particulier


0 commentaires