Как написать фильтр Graphene+Django, который действует на два столбца одновременно

Я пытаюсь написать фильтр на Graphene + Django, который принимает один входной сигнал, но действует на два столбца одновременно. Два столбца представляют собой два числа a и b, и фильтр, который мне нужен, выбирает все элементы, где произведение a и b больше некоторого значения фильтра.

class MyModel(models.Model):
    a = models.FloatField()
    b = models.FloatField()


class MultiplicationFilter(Filter):
    def filter(self, qs, value):
        # what to do here???


class MyModelCustomFilter(FilterSet):
    class Meta:
        model = MyModel

    multiplication_filter = MultiplicationFilter(field_name=???) # I can't have 2 fields, what do I put here?

    order_by = OrderingFilter(
        fields=("a", 'b'),
    )      


class MyModelNode(DjangoObjectType):
    class Meta:
        model = MyModel
        fields = "__all__"
        filterset_class = MyModelCustomFilter
        interfaces = (graphene.relay.Node, )

Я знаю, что Django предлагает более сложную функциональность запросов с помощью функции Q(), но я не знаю, как сформулировать это в виде графенового фильтра.

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