Использование пользовательского менеджера в M2M сериализаторе в Django Rest Framework

У меня есть три модели. Я упростил случай для более легкого понимания:

class Physician(model.Models):
   name       = models.CharField(max_length=255)
   surname    = models.CharField(max_length=255)


class Hospital(model.Models):
   name       = models.CharField(max_length=512)
   physicians = models.ManyToManyField(Physician, through=Membership, related_name='hospitals')


class MembershipManager(models.Manager):
    def get_queryset(self):
        is_verified = # A very complex annotate case.
        return super(MembershipManager, self).get_queryset().annotate(is_verified=is_verified)


class Membership(model.Models):
   hospital   = models.ForeignKey(Hospital, on_delete=models.CASCADE)
   physician  = models.ForeignKey(Physician, on_delete=models.CASCADE)

   object = MembershipManager()

Я использую Django Rest Framework для создания API только для чтения. В этом случае у Pyhisician может быть много Memberships в разных Hospitals.

Я хочу добавить атрибут is_verified в сериализатор Hospital. Конечно, я мог бы создать функцию is_verified_for_physician(self, physician) внутри класса Hospital, но это поле дорого вычислять (поэтому я и сделал annotate в менеджере).

Вопрос в том, как я могу достичь этого, используя Serializers?

Естественным для меня было бы запросить physician.hospitals.all() и каким-то образом передать поле is_verified из модели Membership в модель Hospital. Возможно ли это?

Вернуться на верх