2010-01-20 4 views
2

Je suis nouveau à Django et j'essaie toujours de briser les vieilles habitudes PHP. Voici deux modèles. Pour rendre les choses confus qu'ils vivent dans des fichiers séparés, dans différentes applications ...Recherche ForeignKey inversée

#article.models 
from someapp.author.models import Author 

class Article(model.Model): 
    ... 
    author = models.ForeignKey(Author) 


# author.models 
class Author(model.Model): 
    ... 

A partir de ce schéma, je veux être en mesure d'obtenir tous les articles d'un auteur. Quelque chose comme:
author = Auteur (pk = 1)
articles = author.articles

Ma première réaction a été d'écrire une méthode qui a fait un simple coup d'oeil dans le modèle de l'article basé sur l'ID auteurs. Ce qui s'est passé ici était une boucle d'inclusion sans fin à cause des fichiers séparés. Article nécessaire Auteur importé à utiliser pour l'article ForeignKey et Auteur nécessaire inclus à utiliser pour la recherche de modèle. Cela se sentait hacky et faux. Je préférerais le faire de la bonne manière ... Alors, quelle est la manière de Django?

Répondre

3

Je pense que c'est ce que vous demandez ...

class Article(model.Model): 
    ... 
    author = models.ForeignKey(Author, related_name='articles') 

Sur une note de côté, par défaut sans changer quoi que ce soit que vous avez, je pense que cela fonctionnerait pour vous ...

article.author_set 

Mais pour maintenir la vous pouvez spécifier que vous mentionnez ci-dessus syntaxe article.authors, que vous-même avec related_name.

+0

Wow. J'ai vraiment compliqué cela et mal compris la documentation. Exactement ce que je cherchais. Je vous remercie. – CrashRoX

+0

@CrashRoX: Vous devriez accepter cette réponse si elle vous a aidé. –

Questions connexes