I am using Django filter and using it in normal view it is working as 
expected now I want to download the filtered data so for this I am writing 
one download view where I am trying to use the same FilterClass but no 
luck. It is giving me an ERROR( 
*Exception Value:type object ‘CTSFilter’ has no attribute ‘values_list’* ). 
Can anyone please help/suggest how to use filtered queryset in filter class 
more than one view OR pass the data of filtered query to the download views.

Please find my code.

*filters.py*

*class CTSFilter(django_filters.FilterSet):*

*    id = django_filters.NumberFilter(label="DSID")*

*    class Meta:*

*        model = CTA*

*        fields = ['IDk', 'EmailID', 'id', 
'SerialNumber','Shift_timing','Project_name' ]*

Here I want when the user will select *Shift_timing* for example Morning he 
will get 10 records so the same data I want to pass to the below download 
view. (For this I am using *CTSFilter* class but no luck.)

Please find the below download code(View).

def exportcts_data(request):

    response = HttpResponse(content_type='application/ms-excel')

    response['Content-Disposition'] = 'attachment; 
filename="CTA_ShiftTiming.xls"'

    wb = xlwt.Workbook(encoding='utf-8')

    ws = wb.add_sheet('CTA_ShiftChange Data') # this will make a sheet 
named Users Data

    # Sheet header, first row

    row_num = 0

    font_style = xlwt.XFStyle()

    font_style.font.bold = True

    columns = 
['id','ldap_id','Shift_timing','EmailID','Vendor_Company','Project_name','SerialNumber','Reason','last_updated_time']

    for col_num in range(len(columns)):

        ws.write(row_num, col_num, columns[col_num], font_style) # at 0 row 
0 column

    # Sheet body, remaining rows

    font_style = xlwt.XFStyle()

    cta_list = CTA.objects.all()

    cta_filter = CTAFilter(request.GET, queryset=cts_list)

    allcta = cta_filter.qs

    rows = 
allcta.values_list('id2','IDK','Shift_timing','EmailID','Vendor_Company','Project_name','SerialNumber','Reason','last_updated_time')

    for row in rows:

    row_num += 1

    for col_num in range(len(row)):

    ws.write(row_num, col_num, row[col_num], font_style)

    wb.save(response)

    return response


This download view even after passing the filtered class queryset giving me 
all model data.

Note: If I am Hardcoding it is working for example.

rows = 
`TCA.objects.filter(Shift_timing__exact='Morning').values_list('id','idk','Shift_timing','EmailID','Vendor_Company','Project_name','SerialNumber','Reason','last_updated_time')`

    ```

so above code give me all result where Shift timing is morning but I want 
to do it dynamically bypassing filtered class data. Any help on this would 
be highly appreciable.
+ 
https://stackoverflow.com/questions/65378255/how-to-use-django-filtered-class-data-to-2-seperate-view
 
(Question on Stack overflow.)

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/ac360d67-4889-4c21-94cf-0463ca9c4d7dn%40googlegroups.com.

Reply via email to