Как написать фильтр 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(), но я не знаю, как сформулировать это в виде графенового фильтра.