Django кнопка со ссылкой на предварительно отфильтрованные данные
Hej!
У меня есть несколько представлений, некоторые с таблицами результатов и некоторые детальные представления. Из детальных представлений должны быть ссылки на другие детальные представления (что работает) и на некоторые таблицы результатов с предварительно заполненными формами/отфильтрованными результатами. Например, после имени, указанного в детальном представлении.
При нажатии на кнопку я хочу получить перенаправление в таблицу результатов, уже отфильтрованную по имени (например) родительского учреждения, указанного в детальном представлении. Но я хочу использовать один и тот же шаблон для всех детальных представлений (каждое учреждение получает детальное представление), поэтому он должен быть универсальным, а не жестко закодированным.
Кто-нибудь знает, как я могу этого добиться? Я совсем запутался и не могу найти хорошее решение.
# forms.py
class SearchInstitutionsForm(forms.Form):
name = forms.CharField(
label="Name",
required=False,
)
# views.py
def search_institution(request):
if request.method == "POST":
# create a form instance and populate it with data from the request:
form = SearchInstitutionsForm(request.POST)
if form.is_valid():
query = institution_filter_query(form)
context = {
"result_data": serialize(query),
"form": form,
"show_form": False,
}
return render(request, "stakeholders/search_form.html", context)
else:
form = SearchInstitutionsForm()
class InstitutionDetail(DetailView):
model = Institution
def get(self, request, *args, **kwargs):
institution = get_object_or_404(Institution, pk=kwargs['pk'])
context = {'institution': institution}
return render(request, 'stakeholders/institution_detail.html', context)
# query.py
def institution_filter_query(form):
query = Institution.objects.all()
if form.cleaned_data["name"]:
for name in form.cleaned_data["name"]:
name_query = (
name_query
| Institution.objects.filter(name__contains=name)
| Institution.objects.filter(abbreviation__contains=name)
)
query = query.intersection(name_query)
return query
<!-- search_form.html -->
<div class="row collapse {% if show_form %} show {% endif %}" id="form-holder">
<div class="col">
<form method="post">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" value="Search">
</form>
</div>
</div>
<div class="table-holder">
<div id="result-table" class="h-100 w-100"></div>
</div>
Таблица результатов сама по себе отображается в файле javascript. При необходимости я могу добавить и это.
<!-- institution_detail.html -->
<h3>Institution</h3>
<p><b>Name: </b>{{institution.name}}</p>
<p><b>Abbreviation: </b>{{institution.abbreviation}}</p>
<p><b>Parent institution: </b>{{institution.parent_institution}}</p>
<a class="btn btn-sm btn-info" href="{% url 'stakeholders:institution-view' %}"><i>(filtered)</i> Institutions</a></td>
Любая помощь приветствуется! Если вы знаете, где я должен искать, я не против! У меня есть другое приложение с разработанной формой ввода с предварительно заполненными данными, но это, похоже, не работает здесь.
Наилучшие пожелания! :)