У меня есть следующая проблема:
Мои модели настроены аналогично следующему сценарию
class Membership(models.Model):
user = models.ForeignKey(User)
verified = models.BooleanField()
class ClubMembership(Membership):
club = models.ForeignKey(Club)
class ForumMembership(Membership):
forum = models.ForeignKey(Forum)
class Club(models.Model):
members = models.ManyToManyField(User, through='ClubMembership')
class Forum(models.Model):
members = models.ManyToManyField(User, through='ForumMembership')
(Раньше у меня было членство как абстрактный класс, но это не позволяло мне запрашивать базовый класс.) Теперь я хочу запросить, например. все членства, которые еще не были проверены для конкретного пользователя. я могу сделать
memberships = Membership.objects.filter(verified=False)
и это дает мне список всех членств с проверенным = False. Однако я не могу найти способ 1) проверить, к какому подклассу принадлежит членство, и 2) я не могу получить доступ к полю «клуб» или «форум», даже если я знаю тип подкласса. Есть ли способ получить доступ к типу базового класса после того, как я запросил базовый класс, и как мне получить доступ к полям подкласса?