我正在使用django-filter处理提交的表单。 中的Queryset部分由注释组成。 对于大多数过滤字段,应用lte和gte查找。 此外,上述查找可以同时启动
field_1__lte = django_filters.NumberFilter(field_name='field_1', lookup_expr='lte')
field_1__gte = django_filters.NumberFilter(field_name='field_1', lookup_expr='gte')
上述字段通过注释进行计算
field_1_qs = RelatedObject.objects.filter(MainObject=OuterRef('pk')).order_by('-updated_timestamp')
main_query_set = main_query_set.annotate(field_1:field_1_qs)
在专用表单上有许多类似的字段,如 最小值和最大值。 但是,为什么它的射程出现问题呢
例如,如果我们设置字段_1_lte=-1和字段_1_gte=-1, 筛选器返回空结果
在我们设置字段_1_lte=1和字段_1_gte=5的情况下, 过滤器将不包括在结果低边界中
在这种情况下,我们设置字段_1_lte=-5和字段_1_gte=-3, 过滤器将不包括在结果上边界中
事实上,对于四舍五入注释字段来说,这是一个相对的问题。 在我们的例子中,计算大多数带注释的字段涉及将两个字段的子结构除以一个字段。并且在不强制转换它的情况下,在后端生成全零,在前端生成右值(在表单渲染时)。所以,我的解决方案是使用铸造
我们到了。 希望,有一天,上面会帮助某人:=)
相关问题 更多 >
编程相关推荐