Как следовать отношениям от M2O к O2O в обратном направлении? - PullRequest
1 голос
/ 30 марта 2012

UserProfile имеет однозначное значение «Пользователь» и многозначное значение Place

class UserProfile( models.Model ) :
    user  = models.OneToOneField( User )
    place = models.ForeignKey( Place, null = True, blank = True )

В моем подробном представлении Place я хочуперечислить всех жителей для этого Place.Другими словами, я хочу перечислить все User s, у которых UserProfile был указан Place.

В моем шаблоне я попытался

{% for resident in place.user_profile_set.user_set.all %}

Но это не такт работа.Я предполагаю, что упускаю что-то принципиально в концепции Джанго «следуя отношениям в обратном направлении» ?

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Вам не хватает двух вещей, да.

Во-первых, обратное отношение от Place к UserProfile равно userprofile_set, а не user_profile_set.

Второе - это то, что оттуда к User не является обратным отношением вообще: оно направлено вперед, потому что FK определен в модели UserProfile. Таким образом, с UserProfile до User вы просто делаете .user - и это один элемент, а не набор запросов.

Итак, как говорит пастилег, вы перебираете профили в place.userprofile_set.all и делаете profile.user.

3 голосов
/ 30 марта 2012

Что-то вроде следующего:

{% for resident in place.userprofile_set.all %}
    {{ resident.user }}
{% endfor %}
...