我创建了一个过滤器栏(使用 django-filter 模块中的过滤器集),但我无法以脆脆的形式呈现它。
crispy-forms 与 django-filter 兼容吗?我尝试过,Crispy Forms 与我所有其他表单和模型表单都能很好地配合,但 django-filter 似乎拒绝在 Crispy-bootstrap 中渲染。
HTML:
{% extends 'base/base1.html' %}
{% load static %}
{% block content %}
{% load crispy_forms_tags %}
<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>
过滤器.py:
import django_filters
from .models import log
class logFilter(django_filters.FilterSet):
class Meta:
model = log
fields = {
'varfliedhere': ['icontains'],
'varfliedhere': ['icontains'],
'varfliedhere': ['icontains'],
'Boolean varfliedhere': ['exact'],
}
我应该尝试在表单中设置FormHelper吗?但在这种情况下,我该如何将其呈现为 Crispy Forms 呢?
在其他形式中,我将它们一一呈现为:
{{ myFilter.form.variablefieldhere|as_crispy_field}}
这有效,但我不明白如何解决这个问题。
由于我不清楚您的要求。但我假设您希望所有字段都在单行中,并且您正在使用 Cripyform 的引导模板。
<form method="GET">
<div class="form-row">
<div class="form-group col-md-2 mb-0 ">
{{myFilter.form.variablefieldhere1|as_crispy_field}}
</div>
<div class="form-group col-md-2 mb-0 ">
{{myFilter.form.variablefieldhere2|as_crispy_field}}
</div>
<div class="form-group col-md-2 mb-0 ">
{{myFilter.form.variablefieldhere3|as_crispy_field}}
</div>
<div class="form-group col-md-2 mb-0 ">
{{myFilter.form.variablefieldhere4|as_crispy_field}}
</div>
<div class=" col-md-2 mb-0 ">
<button class="btn btn-primary btn-sm" type="submit">search</button>
</div>
</div>
</form>
因为我在尝试渲染各个过滤器字段时遇到了同样的问题:问题可能是您在元类中初始化了查找表达式。
当我在类 Body 中显式定义变量时,它对我有用。 试试这个:
import django_filters
from .models import log
class logFilter(django_filters.FilterSet):
varvield1 = django_filters.CharFilter(lookup_expr="icontains")
varvield2 = django_filters.CharFilter(lookup_expr="icontains")
class Meta:
model = log
fields = ["varfield1", "varfield2"]
然后在您的 HTML 中只需遵循 khadim husen 的答案即可。