У меня есть PhysicalServerListSerializer
, в нем есть поле метода сериализатора server_status
.
class PhysicalServerListSerializer(ModelSerializer):
server_status = serializers.SerializerMethodField()
class Meta:
model = PhysicalServer
fields = "__all__"
depth = 1
def get_server_status(self, obj):
if obj.task and obj.is_finish_task:
return 'ok'
if obj.task and not obj.is_finish_task:
return 'ing'
Но у меня есть требование, когда я запрашиваю его в методе get.
http://localhost:8000/api/physicalserver/list/?server_status=ing
он не может запросить server_status
, как решить эту проблему?
Мой код ListAPIView ниже:
class PhysicalServerListAPIView(ListAPIView):
serializer_class = PhysicalServerListSerializer
permission_classes = [AllowAny]
pagination_class = CommonPagination
def get_queryset(self):
query_params = self.request.query_params
filters = {'{}__contains'.format(key): value
for key, value in query_params.items()
}
qs = PhysicalServer.objects.filter(**filters)
return qs