Обратный просмотр ForeignKey - PullRequest
2 голосов
/ 20 января 2010

Я новичок в Django и все еще пытаюсь избавиться от старых привычек PHP. Ниже представлены две модели. Чтобы запутать их, они живут в отдельных файлах, в разных приложениях ...

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

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


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

Из этой схемы я хочу иметь возможность получить все статьи автора. Что-то вроде:
автор = автор (pk = 1)
статьи = author.articles

Моей первой реакцией было написание метода, который просто просматривал модель статьи на основе идентификатора автора. То, что произошло здесь, было бесконечным циклом включения из-за отдельных файлов. Необходима статья Автор импортирован для использования в ForeignKey, а Автор включен в статью для поиска модели. Это чувствовало себя нехорошо и неправильно. Я бы предпочел сделать это правильно ... Итак, каков путь Джанго?

1 Ответ

3 голосов
/ 20 января 2010

Я думаю, это то, что вы просите ...

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

На заметку, по умолчанию, не меняя ничего, что у вас есть, я думаю, что это будет работать для вас ...

article.author_set

Но чтобы сохранить синтаксис article.authors, который вы упомянули выше, вы можете указать это сами с помощью related_name.

...