- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 OrderingFilter
的模型后端。现在只能按字段订购 id
被允许。
我也想提供按其他字段排序的选项,但不必在我的数据库中公开字段名称。有没有办法做到这一点?
最佳答案
我创建了一个 AliasedOrderingFilter 应该很好地满足这个需求。它扩展了 ordering_fields 属性以允许字段和字符串的元组。例如,您可以将 View ordering_fields 设置为:
ordering_fields = (('alias1', 'field1'),('alias2', 'field2'), 'field3')
ordering=alias1,-alias2,field3
的请求中使用此类将导致:
qs.order_by('field1', '-field2', 'field3)
class AliasedOrderingFilter(OrderingFilter):
''' this allows us to "alias" fields on our model to ensure consistency at the API level
We do so by allowing the ordering_fields attribute to accept a list of tuples.
You can mix and match, i.e.:
ordering_fields = (('alias1', 'field1'), 'field2', ('alias2', 'field2')) '''
def remove_invalid_fields(self, queryset, fields, view):
valid_fields = getattr(view, 'ordering_fields', self.ordering_fields)
if valid_fields is None or valid_fields == '__all__':
return super(AliasedOrderingFilter, self).remove_invalid_fields(queryset, fields, view)
aliased_fields = {}
for field in valid_fields:
if isinstance(field, basestring):
aliased_fields[field] = field
else:
aliased_fields[field[0]] = field[1]
ordering = []
for raw_field in fields:
invert = raw_field[0] == '-'
field = raw_field.lstrip('-')
if field in aliased_fields:
if invert:
ordering.append('-{}'.format(aliased_fields[field]))
else:
ordering.append(aliased_fields[field])
return ordering
关于django - 如何在不公开数据库中字段名称的情况下使用 OrderingFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691933/
我有一个使用 OrderingFilter 的模型后端。现在只能按字段订购 id被允许。 我也想提供按其他字段排序的选项,但不必在我的数据库中公开字段名称。有没有办法做到这一点? 最佳答案 我创建了一
我一直在尝试获取 OrderingFilter去工作。从 django-rest-framework 页面中的示例来看,它似乎应该相当简单: class UserListView(generics.L
我有一个带有继电器和过滤器的 Graphite 烯接口(interface)。它工作得很好,但我想添加 order_by 选项。我的对象看起来像: class FooGQLType(Djang
我找不到有关如何在 ModelViewSet @action 中使用 django Rest 框架中的 OrderingFilter 的信息,有谁知道我将如何实现它? 我有类别,这些类别有我通过该操作
我找不到有关如何在 ModelViewSet @action 中使用 django Rest 框架中的 OrderingFilter 的信息,有谁知道我将如何实现它? 我有类别,这些类别有我通过该操作
我有一个模型可以说 ObservedMoves .在我的 View 中的许多查询中都引用了此模型。因此,不是直接在每个 View 中应用我想要的过滤器,而是将它们抽象到过滤器类中,让我们说 Obser
我正在使用 Django Rest Framework 构建 API。对于某些模型我使用像这样的元类字段 class Meta: ordering = ['-time'] 而且看起来运行良好。
我有一个 View 集,需要同时具有按参数灵活排序和按参数过滤的自定义 list()超越。我可以通过 django-filter 进行订购以及过滤各种参数。 ,但我无法让它们同时运行。 这是我的简化版
我必须重写 DRF ViewSet 的默认 list() 方法,但是当我这样做时,所有过滤、排序和分页都停止工作。 这是 ViewSet 的代码: class ZoneViewSet(viewsets
我是一名优秀的程序员,十分优秀!