【问题标题】:django filter get filter field value inside the viewdjango过滤器获取视图内的过滤器字段值
【发布时间】:2020-08-21 05:18:09
【问题描述】:

我有这样的过滤器

class SummaryFilter(django_filters.FilterSet):
start = django_filters.DateFilter(
    field_name="date_modified",
    lookup_expr="gte",
)
end = django_filters.DateFilter(
    field_name="date_modified",
    lookup_expr="lte",
)

在我看来,我正在这样做

class GetRiskyUsersSummary(generics.ListAPIView):
   model = Summary
   queryset = Summary.objects.all()
   serializer_class = serializers.ModelSerializer
   filter_backends = (filters.DjangoFilterBackend,)
   filterset_class = SummaryFilter

def list(self, request, *args, **kwargs):
    queryset = self.filter_queryset(self.get_queryset())
    response = {}
    ********doing some stuff here and return in response*******
    **** for doing these i need the cleaned start and end date as date objects like below but couldnt figure out the option for this in the library****
    self.filter.cleaned_data.get('start')
    self.filter.cleaned_data.get('end')
    
    return Response({"response": response})

如何在视图中获取这些数据?

【问题讨论】:

  • “清理的开始和结束日期”是什么意思?查询参数中的数据?
  • 清理我的意思是表单验证后的数据。所以在 request.GET 中,我将日期作为字符串,清理后我将获得日期对象。
  • afaik,你不能那样做。但是,你可以自己解析它

标签: django django-filter


【解决方案1】:

您可以通过初始化来检索过滤器数据

def list(self, request, *args, **kwargs):
    myfilter = self.filterset_class(request.GET, queryset=self.get_queryset())
    if myfilter.is_valid():
        queryset = myfilter.qs
        myfilter.form.cleaned_data.get('start')
        myfilter.form.cleaned_data.get('end')

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 2023-01-15
    • 1970-01-01
    • 2023-03-25
    • 2010-12-15
    • 1970-01-01
    • 2016-11-14
    • 2017-01-31
    • 1970-01-01
    相关资源
    最近更新 更多