Использование ManyToMany дополнительных полей из шаблона в Django - PullRequest
0 голосов
/ 14 декабря 2011

Я буду использовать несколько упрощенную версию примера из документации Джано.

class Person(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

class MembershipInfo(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    invite_reason = models.CharField(max_length=64)

Итак, я хочу перебрать, скажем, Group и Person в шаблоне и получить некоторую информацию из дополнительных полей, например:

{% for group in group_list %}
    {% for person in group.person.all %}
        {{ person.membership_info.invite_reason }}
    {% endfor %}
{% endfor %}

Но это, похоже, не работает для меня. Полагаю, я просто не могу найти правильный способ доступа к нему.

1 Ответ

0 голосов
/ 14 декабря 2011

Вы можете попробовать следующее:

{% for person in person_list.all %}
    {% for membership_info in person.members_set.all }}
        {{ membership_info.invite_reason }}
    {% endfor %}
{% endfor %}

Это не очень эффективно, но я думаю, что это единственный вариант, использующий исключительно шаблоны.

Редактировать .Другой вариант - выбрать все объекты MembershipInfo из базы данных, отсортировать их по лицам и группам и передать их в свой шаблон.Для этого потребуется только один запрос к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...