Django - Как использовать django-filters(модуль) с рендерингом crispy-forms
Я новичок и все еще учусь, буду благодарен за помощь в этом вопросе. Я создал listview, grid, объекты из моей db и все.
Теперь я хочу создать панель фильтра для выбора/поиска определенных значений в моем списке объектов путем их фильтрации + иметь ее в crispy.
Я скачал и "pip install django-filter (2.4.0)" и django-crispy (forms).
Я уже использую crispy для настройки форм (в основном Modelforms); я создал строку поиска, которая вроде бы работает, но общий дизайн не очень хорош, и мне приходится делать ее на bootstrap. По этой причине я пытаюсь сделать форму фильтра на bootstrap с помощью crispy, но она не работает и a)отображает стандартную форму django; b)ошибка. Похоже, не принимает crispy.
По этой причине: Возможно ли это сделать? Или эти модули не совместимы? Если да, то какова наилучшая практика для этого? Если нет, что я должен сделать вместо этого?
**HTML**
{% extends 'base/base1.html' %}
{% load static %}
{% block content %}
{% load crispy_forms_tags %}
<h3>Log List</h3>
<a class="btn btn-outline-info " href="{% url 'home' %}">Back to homepage</a>
<hr>
<div class="row">
<div class="col">
<div class="card card-body">
<form method="get">
****{{ myFilter.form}}****
*/tried also {{ myFilter.form|crispy}}
{{ myFilter.form.variablefieldhere|as_crispy_field}}**
<button class="btn btn-primary" type="submit">
Search</button>
</form>
</div>
</div>
</div>
<br>
<ul>
<table class="table table-hover table-light table-striped">
<thead>
<tr>
<th scope="col">Instructor</th>
<th scope="col">Instruction</th>
<th scope="col">Rent</th>
</tr>
</thead>
<tbody>
<tr>
<caption>Total number of selected Logs: {{ page_obj.paginator.count }}</caption>
{% for log in myFilter.qs %}
<th scope="row"><a href="{{ log.get_absolute_url }}">{{ log.variablefieldhere }}</a></th>
<td>
{{ log.variablefieldhere }}
</td>
**Filters.py**
import django_filters
from .models import Headfttlog
class logFilter(django_filters.FilterSet):
class Meta:
model = Hlog
fields = {
'varfliedhere': ['icontains'],
'varfliedhere': ['icontains'],
'varfliedhere': ['icontains'],
'Boolean varfliedhere': ['exact'],
}
**Forms.py**
*imports
*model import
class Log(ModelForm)
model = Log
exclude = ['slug']
**View.py**
various imports
# Load functions and tools for filter bar
from .filters import logFilter
# List view #
from .models import log
class logListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
permission_required = 'var.view_log'
model = log
paginate_by = 10
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['myFilter'] = logFilter(self.request.GET, queryset=self.get_queryset())
return context
Заранее спасибо за помощь!