Django: загрузка отфильтрованных данных в формате csv

Hej!

У меня есть данные из модели в таблице (созданной в шаблоне) и я хочу загрузить их в формате csv. Моя проблема в том, что я не могу применить свои фильтры в загруженном csv, он всегда выдает мне весь список.

И я не могу получить имя родительского_института, только '1', если оно есть.

Кто-нибудь знает, как этого добиться? Или знает, что я делаю не так?

Любая помощь будет принята с благодарностью! :)

# views.py

def download_csv(request):
    institutions = Institution.objects.all()
    filter = InstitutionFilter(request.GET, queryset=institutions).qs

    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="institutions.csv"'

    writer = csv.writer(response)

    writer.writerow(['Name', "Abbreviation", "Parent Institution", "Phone Number"])

    for institution in filter.values_list('name', 'abbreviation', 'parent_institution', 'contact_details'):
        writer.writerow(institution)

    return response
# filters.py

class InstitutionFilter(django_filters.FilterSet):

    name = CharFilter(field_name="name", lookup_expr="icontains")

    class Meta:
        model = Institution
        fields = "__all__"
<!-- template.html -->

<br>
    <div class="row collapse {% if show_form %} show  {% endif %}" id="form-holder">
        <div class="row">
            <div class="col">
                <div class="card card-body">

                    <form method="get">
                        {{myFilter.form.as_p}}

                        <button class="btn-primary" type="submit">Search</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
</br>


<div class="row">
    <div class="col-md">
        <div class="card card-body">
            <table class="table table-sm">
                <tr>
                    <th>Name</th>
                    <th>Abbreviation</th>
                    <th>Parent Institution</th>
                </tr>

                {% for institution in institutions %}
                <tr>
                    <td>{{institution.name}}</td>
                    <td>{{institution.abbreviation}}</td>
                    <td>{{institution.parent_institution.name}}</td>
                </tr>
                {% endfor %}
            </table>
        </div>
    </div>
</div>

Мне пришлось добавить параметр filter в url, чтобы заставить их работать. Так что решение лежит в шаблоне, а не в представлениях :)

<div class="col">
            <a href="{% url 'csv_download:download_institutions' %}?{{ request.GET.urlencode }}">Download CSV</a>
</div>
Вернуться на верх