class PublicUserViewSet(viewsets.ModelViewSet):
    permission_classes = (IsAuthenticated,)
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = [filters.SearchFilter,DjangoFilterBackend]
    pagination_class = StandardResultsSetPagination
    filterset_fields = {'id','username','deliveredtotime': ['gte', 'lte']}

当我用下面的参数try 它时,它起作用了:

    filterset_fields = ['id','username','deliveredtotime']

它还可以与

    filterset_fields = {'deliveredtotime': ['gte', 'lte']}

但当我try 这样做时,如下所示:

    filterset_fields = {'id','username','deliveredtotime': ['gte', 'lte']}

我明白了:

Error:

filterset_fields = {'id','username','deliveredtotime': ['gte', 'lte']}

SyntaxError: invalid syntax ':'

我怎么才能解决这个问题呢?

注意:我知道这是一个有效的字典参数.但我已经看过 https://www.django-rest-framework.org/api-guide/filtering/个 也看不到任何有效的 Select .有没有人知道如何解决这个问题?

推荐答案

如果您传递一个字段列表,Django filters会将其转换为带有DEFAULT_LOOKUP_EXPR作为查找的词典.

因此,我们可以使用:

from django_filters.conf import settings

filterset_fields = {
    'id': [settings.DEFAULT_LOOKUP_EXPR],
    'username': [settings.DEFAULT_LOOKUP_EXPR],
    'deliveredtotime': ['gte', 'lte'],
}

这相当于:

from django_filters.conf import settings

filterset_fields = {
    'id': ['exact'],
    'username': ['exact'],
    'deliveredtotime': ['gte', 'lte'],
}

但这样一来,Django过滤器就可以在以后改变这一点.

因此,它将仅使用exact过滤器对这些字段进行过滤.

Python相关问答推荐

两极按组颠倒顺序

Pandas .类型错误:只能将字符串(而不是int)连接到字符串

如何确保Flask应用程序管理面板中的项目具有单击删除功能?

在Python中是否可以输入使用任意大小参数列表的第一个元素的函数

如何将自动创建的代码转换为类而不是字符串?

当变量也可以是无或真时,判断是否为假

Python中的锁定类和线程以实现dict移动

将词典写入Excel

当测试字符串100%包含查询字符串时,为什么t fuzzywuzzy s Process.extractBests不给出100%分数?

"Discord机器人中缺少所需的位置参数ctx

数字梯度的意外值

Image Font生成带有条形码Code 128的条形码时出现枕头错误OSErsor:无法打开资源

如何在Python中使用io.BytesIO写入现有缓冲区?

如何自动抓取以下CSV

将特定列信息移动到当前行下的新行

什么相当于pytorch中的numpy累积ufunc

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

所有列的滚动标准差,忽略NaN

基于多个数组的多个条件将值添加到numpy数组