Добавить дополнительное поле в сериализатор наборов запросов - PullRequest
1 голос
/ 20 января 2020

У меня есть представление API списка:

class ListRequisitesOfEnrollee(generics.ListAPIView):
    serializer_class = RequisiteSerializer

    def get_queryset(self):
        enrollee = Enrollee.objects.get(id=self.kwargs['pk'])
        requisites = enrollee.requisites.all()
        if isinstance(enrollee, OrganisationUnit):
            requisites = requisites | enrollee.org.requisites.all()
        elif isinstance(enrollee, ElsUser):
            org_unit_requisites = enrollee.organisation_unit.requisites.all()
            org_requisites = enrollee.organisation_unit.org.requisites.all()
            groups = Enrollee.objects.filter(group__users=enrollee)
            for group in groups:
                requisites = requisites | group.requisites.all()
            requisites = requisites | org_unit_requisites | org_requisites

        return requisites

Я хочу добавить дополнительное поле "source" в набор запросов для определенных c объектов. Например, внутри

isinstance(enrollee, OrganisationUnit) , 
requisites = requisites + enrollee.org.requisites.all()

enrollee.org.requisites.all() queryset должно содержать дополнительное поле source ="Org Name".

Я хочу избежать добавления дополнительных полей в таблицу

1 Ответ

0 голосов
/ 20 января 2020

вы можете использовать дополнительный метод для этого

enrollee.org.requisites.extra(
    select={
        'source': "name"=> it can be replace by query also
    },
)
...