Джанго обратный поиск по ForeignKey - PullRequest
6 голосов
/ 15 ноября 2010

У меня есть проект django, в котором есть два приложения, одно из которых AppA и AppB. Теперь AppA имеет модель ModelA, на который ссылается модель ModelB в AppB, используя modelA = models.ForeignKey(ModelA, related_name='tricky')

Теперь, на мой взгляд, для AppA, когда он показывает ModelA, я делаю get_object_or_404(ModelA, pk=prim_id). Затем я хочу получить все ModelB с внешним ключом, указывающим на ModelA.

Документация говорит, что я должен сделать mb = ModelB.objects.get(pk=prim_id) тогда mb.modela_set.all()

Но это не удалось на mb.modela_set, и он говорит "ModelB object has no attribute 'suchsuch'". Обратите внимание, что я добавил поле related_name в ForeignKey, поэтому я попытался с этим также, включая mb.tricky.all() и mb.tricky_set.all() безрезультатно.

О, и я указал другой менеджер для AppA, где я делаю objects = MyManager(), который возвращает обычный запрос, но с примененным фильтром.

В чем может быть проблема? Каков предпочтительный способ получения ModelB s ссылки ModelA?

1 Ответ

5 голосов
/ 15 ноября 2010

Если ForeignKey, как вы описали в ModelB, и вы делаете mb = ModelB.objects.get(pk=prim_id), то поиск атрибута modela не является обратным поиском . вы просто получаете доступ к связанному объекту через mb.modela!

...