Использование пользовательского менеджера в 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. Возможно ли это?