У меня есть набор моделей, похожий на приведенный ниже, где человек может быть членом многих клубов, но иметь различный тип членства. В данном случае я считаю Membership
слабой сущностью Club
class Person(models.Model):
name = models.TextField()
class Club(models.Model):
members = models.ManyToManyField(
Person,
related_name="clubs"
through='Membership'
)
class Membership(models.Model):
person = models.ForeignKey(Person)
club = models.ForeignKey(Club)
member_type = models.TextField()
Я знаю, что могу получить доступ к информации о членстве в клубе, выполнив следующие действия:
instance_of_club.membership_set.all()
И я могу получить список всех людей, используя это:
instance_of_club.membership_set
Тем не менее, я пытаюсь написать сериализатор для такого сценария, и у меня возникают проблемы с правильным поиском деталей «членства» из класса django Meta
.
Club._meta.many_to_many
дает поле members
:
<django.db.models.fields.related.ManyToManyField: members>
Но ничто в members
не указывает, как получить аксессор _set
, и мне нужно иметь возможность получить его программно. Я хочу иметь возможность получить список всех отношений ManyToMany through
, а затем получить объекты, которые они содержат, а не только внешние объекты.
Для контекста:
members.related.through
дает классMembership
, но не набор экземпляровmembers.related.related_name
ничего не даетClub._meta.get_all_field_names()
даетmembership
в списке, но неmembership_set
Как я могу получить список объектов отношения through
в поле ManyToMany?
through='Person'
должна бытьthrough='Membership'
? - person AKS   schedule 21.11.2016Member
, а таблицаMembership
имеет внешний ключ к моделиPerson
? Как связаны моделиMember
иPerson
? - person AKS   schedule 21.11.2016