Я столкнулся с чрезвычайно странной проблемой при отображении отфильтрованных результатов.
Вот мой метод API:
...
@list_route(methods=['GET'], url_path='internal-users')
def internal(self, request, *args, **kwargs):
users = models.User.objects.internal_users()
data = self.get_serializer(users, many=True, context = {'request': request}).data
return response.Ok(data)
...
Вот вызов internal_users() модели пользователя:
...
def internal_users(self) -> Union[QuerySet, List['User']]:
queryset = super(UserManager, self).get_queryset()
queryset = queryset.filter(role_policy__gte=constants.UserRolePolicy.editor) # role_polict >= 63
return queryset
...
До этого момента элемент управления -> показывает правильное формирование запроса и результаты.
...
@list_route(methods=['GET'], url_path='internal-users')
def internal(self, request, *args, **kwargs):
users = models.User.objects.internal_users()
# -> correct results
data = self.get_serializer(users, many=True, context = {'request': request}).data
return response.Ok(data)
...
Однако, как только я передаю свои объекты сериализатору в следующей строке, результаты автоматически уменьшаются только для тех пользователей, у которых role_policy РАВНО 63.
Вот сериализатор:
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = models.User
fields = [
'id',
'uuid',
'email',
'given',
...
'phone',
]
В чем может быть проблема? Пожалуйста помоги.
Он возвращает только 5 пользователей вместо ~ 30 пользователей. Эти 5 пользователей - это те, у которых role_policy РАВНО 63. Все те результаты, где политика ролей пользователя больше 63, по какой-то причине игнорируются.
что я имел в виду, какая операция делает response.Ok ? это не метод среды Django REST. Может быть, это виновник
@Linovia, о, это общий ответ-оболочка, который я создал, чтобы указать статус 200. Он используется во всем приложении.





Виноват. role policy — это текстовое поле, а не целочисленное поле. Вот почему __gte не сработало.
Однако это вводит в заблуждение от Django, поскольку запрос был сформирован идеально.
что значит
response.Ok?