Сериализация только определенных полей из набора запросов в классе сериализатора django

У меня есть queryset, который я получаю из get_queryset(). Мы знаем, что возврат queryset дает список объектов, который содержит все поля модели. Теперь я не хочу сериализовать все поля из модели и показать их все в ответе. Я хочу сериализовать только несколько полей и показать их в ответе api.

например:

def get_queryset(self):

    """""
        filtering happens here on the query parameters.
    """
    abc = self.request.GET.get('abc',None)

Теперь у меня есть функция defualt list, где я должен вызывать класс serializer только с определенными полями.

def list(self, request, *args, **kwargs):
    
    queryset = self.get_queryset()
    # data ={
    #     "name":queryset.
    # }
    
    # serializer = ExampleSerializer(data,many=True)
    #serializer = serializers.serialize("json",queryset=queryset,fields=['id','name','address'])        
    return Response(serializer, status=status.HTTP_200_OK)

Когда я делаю print queryset, он выдает сложный queryset, а когда я делаю print(type(queryset)), он выдает следующее

<class 'django.db.models.query.QuerySet'>

Как сериализовать поля имени и адреса только в класс exampleserializer? Я немного покопался и попытался сделать следующее

#serializer = serializers.serialize("json",queryset=queryset,fields=['id','name','address'])

но он не выдает вывод в нужном формате, не как обычный json. Также он выдает модель: Пример в ответе каждого объекта.

Вы пробовали?

queryset = self.get_queryset().values('name', 'address')

Я не уверен, что полностью понимаю, что вы пытаетесь получить, поскольку ваш код неполный, но кажется, что вам нужен ModelSerializer.
get_queryset() должен использоваться для получения кверисета объектов, которые будут использоваться сериализатором благодаря наследованию DRF & mixins system:

# Serializer
class ExampleSerializer(serializers.ModelSerializer):

    class Meta:
        model = Example
        fields = ('id', 'name', 'address')

# View
class ExampleList(ListAPIView):
    serializer_class = ExampleSerializer

    def get_queryset(self):
        return Example.objects.filter(...)

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