Django_filters несколько аргументов для немодельного поля - PullRequest
1 голос
/ 23 октября 2019

Мне нужна моя конечная точка для приема запросов в формате:

groupId=11111&groupId=22222 и разрешения запроса: groupId=1111 OR groupId=2222

Я не смог найти ничего в документации о том, каксделать это, и сделал следующую реализацию (в настоящее время WIP, не написал много тестов):

    2 from django_filters import rest_framework as filters

   32 class CustomFilter(filters.UUIDFilter):
   33     def filter(self, qs, value):
   33         attr_name = next(k for k, v in self.parent.get_filters().items() if v.field_name == self.field_name)
   34         if attr_name  not in self.parent.data:
   35             return super().filter(qs, value)
   36
   37         q = Q()
   38         for val in self.parent.data.getlist(attr_name ):
   39             q |= Q(**{f"{self.field_name}__{self.lookup_expr}": val})
   40         return self.get_method(qs)(q)

Используется как:

45     groupId = CustomFilter(field_name="group_id", help_text="Jobs associated with group")

Есть ли способ реализоватьэто с помощью того, что уже в рамках?

...