regarder à travers les documents Django et essayer de déterminer l'utilisation de l'argument "à travers". Voici un lien vers le doc .
L'exemple: p> 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? P> P>
4 Réponses :
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. P>
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). P>
Est-ce que cela rend ça plus efficace? Ou est-ce juste une question de commodité?
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. P>
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.
Je pense que vous pensez un peu trop littéralement à ce sujet. Disons que vous n'a pas em> utiliser django, dans les coulisses, crée essentiellement le modèle suivant pour vous: p> La raison de la création d'un modèle code> Modèle est d'ajouter des données supplémentaires que le modèle par défaut Django automatiquement em> 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 code>:
via code>. Fondamentalement, vous préservez l'API Django fournit à MétéoTomanFields. P> P>
Les tables via sont utilisées pour stocker des propriétés de la relation em>, dans ce cas, par exemple. La date A code> personne code> a rejoint un groupe particulier code> p>