Как фильтровать django queryset на основе значения поля serializer?

serializer

class MyModelSerializer(serailizers.ModelSerializer):
        hrs = serializers.SerializerMethodField()
        get_hrs(self, obj):
           datetime = SomeModel.objects.filter(id=obj.id).last().datetime
           now = datetime.now()
           return (now - datetime).total_seconds() // 3600
         
        class Meta:
           model = MyModel
           fields = "__all__"

Теперь в api будет параметр фильтра hr что ему нужно сделать, это отфильтровать набор запросов, соответствующий этому вышеуказанному вычисленному hr.

Например:

    @api_view(["GET"])
    def get_list(request):
        qs = MyModel.objects.all()
        hr = request.GET.get("hr")
        if hr:
          qs = qs.filter(hrs=hr)  # hrs is not inside model
        return MyModelSerializer(qs, many=True).data 

Здесь hrs нет внутри модели, это поле сериализатора над вычисляемым.

Как я могу отфильтровать подобным образом поля serialzier? Любая помощь будет очень полезна.

у вас неправильное размещение:

class MyModelSerializer(serailizers.ModelSerializer):         
    class Meta:
       model = MyModel
       fields = "__all__"
    hrs = serializers.SerializerMethodField()

    def get_hrs(self, obj):
       datetime = SomeModel.objects.filter(id=obj.id).last().datetime
       now = datetime.now()
       return (now - datetime).total_seconds() // 3600
Вернуться на верх