def _filter_field(self, queryset, field_name, qualifier, value, invert, partial=''):
try:
field = self.model._meta.get_field(field_name)
except models.fields.FieldDoesNotExist:
raise BinderRequestError('Unknown field in filter: {{{}}}.{{{}}}.'.format(self.model.__name__, field_name))
for field_class in inspect.getmro(field.__class__):
filter_class = self.get_field_filter(field_class)
if filter_class:
filter = filter_class(field)
try:
return queryset.filter(filter.get_q(qualifier, value, invert, partial))
except ValidationError as e:
# TODO: Maybe convert to a BinderValidationError later?
raise BinderRequestError(e.message)
# If we get here, we didn't find a suitable filter class
raise BinderRequestError('Filtering not supported for type {} ({{{}}}.{{{}}}).'
.format(field.__class__.__name__, self.model.__name__, field_name))
评论列表
文章目录