Django表2过滤器
我试图用Django tables 2和crispy表单显示一个带有过滤器的表 我有以下文件: filter.pyDjango表2过滤器,django,filter,Django,Filter,我试图用Django tables 2和crispy表单显示一个带有过滤器的表 我有以下文件: filter.py import django_filters from .models import Poste class PosteFilter(django_filters.FilterSet): id = django_filters.CharFilter(lookup_expr='icontains') status = django_filters.CharFilter(
import django_filters
from .models import Poste
class PosteFilter(django_filters.FilterSet):
id = django_filters.CharFilter(lookup_expr='icontains')
status = django_filters.CharFilter(lookup_expr='icontains')
address = django_filters.CharFilter(name='address', lookup_expr='icontains')
atualizado_em = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Poste
fields = {'id', 'status', 'address', 'atualizado_em',}
from django import forms
from .models import Poste
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, ButtonHolder, Submit
class PosteListFormHelper(FormHelper):
model = Poste
form_tag = False
form_style = 'inline'
layout = Layout(
'id',
'status',
'address',
'atualizado_em',
Submit('submit', 'Filtrar'),
)
import django_tables2 as tables
from .models import Poste
class PosteTable(tables.Table):
class Meta:
model = Poste
# add class="paleblue" to <table> tag
attrs = {'class': 'paleblue'}
fields = ('id', 'status', 'address', 'atualizado_em')
per_page: 25
forms.py
import django_filters
from .models import Poste
class PosteFilter(django_filters.FilterSet):
id = django_filters.CharFilter(lookup_expr='icontains')
status = django_filters.CharFilter(lookup_expr='icontains')
address = django_filters.CharFilter(name='address', lookup_expr='icontains')
atualizado_em = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Poste
fields = {'id', 'status', 'address', 'atualizado_em',}
from django import forms
from .models import Poste
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, ButtonHolder, Submit
class PosteListFormHelper(FormHelper):
model = Poste
form_tag = False
form_style = 'inline'
layout = Layout(
'id',
'status',
'address',
'atualizado_em',
Submit('submit', 'Filtrar'),
)
import django_tables2 as tables
from .models import Poste
class PosteTable(tables.Table):
class Meta:
model = Poste
# add class="paleblue" to <table> tag
attrs = {'class': 'paleblue'}
fields = ('id', 'status', 'address', 'atualizado_em')
per_page: 25
表.py
import django_filters
from .models import Poste
class PosteFilter(django_filters.FilterSet):
id = django_filters.CharFilter(lookup_expr='icontains')
status = django_filters.CharFilter(lookup_expr='icontains')
address = django_filters.CharFilter(name='address', lookup_expr='icontains')
atualizado_em = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Poste
fields = {'id', 'status', 'address', 'atualizado_em',}
from django import forms
from .models import Poste
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, ButtonHolder, Submit
class PosteListFormHelper(FormHelper):
model = Poste
form_tag = False
form_style = 'inline'
layout = Layout(
'id',
'status',
'address',
'atualizado_em',
Submit('submit', 'Filtrar'),
)
import django_tables2 as tables
from .models import Poste
class PosteTable(tables.Table):
class Meta:
model = Poste
# add class="paleblue" to <table> tag
attrs = {'class': 'paleblue'}
fields = ('id', 'status', 'address', 'atualizado_em')
per_page: 25
将django_表2导入为表
from.models导入Poste
类PosteTable(tables.Table):
类元:
模型=邮政
#将class=“paleblue”添加到标记
属性={'class':'paleblue'}
字段=('id'、'status'、'address'、'atualizado_em')
每页:25
因此,我得出以下结论:
我想要的是:
我尝试了很多方法都没有成功。看起来您可以通过在
CharFilter
中设置label
来设置标签:
class PosteFilter(django_filters.FilterSet):
id = django_filters.CharFilter(lookup_expr='icontains', label='Id')
status = django_filters.CharFilter(lookup_expr='icontains', label='Status')
...
看起来您也可以更改设置,尽管文档警告说这是一个高级设置,可能会更改
from django_filters.conf import DEFAULTS
def FILTERS_VERBOSE_LOOKUPS():
verbose_lookups = DEFAULTS['VERBOSE_LOOKUPS'].copy()
verbose_lookups['icontains'] = '' # Don't add any extra text like 'contains'
return verbose_lookups
我使用
FormHelper
使表单内联
class UnitFilterFormHelper(FormHelper):
form_method = 'GET'
form_style = 'inline'
form_show_labels = False
label_class = 'col-md-1'
field_class = 'col-md-11'
layout = Layout(
HTML('<hr>'),
Row(
Column('branch', css_class="col-md-10"),
Column(Submit('submit', _('Apply Filter')), css_class="col-md-2"),
# css_class="form-inline",
),
)
class UnitFilterPerformHelper(FormHelper):
form_方法='GET'
form_style='inline'
表单显示标签=假
label_class='col-md-1'
字段_类='col-md-11'
布局=布局(
HTML(“
”),
划船(
列(“分支”,css_class=“col-md-10”),
列(Submit('Submit','Apply Filter')),css_class=“col-md-2”),
#css_class=“表单内联”,
),
)
更改标签与更改表单布局是一个单独的问题,因此最好是两个不同的问题。如果你尝试了很多方法都没有成功,那么看看你尝试了什么就好了,这样人们就不会建议不起作用的事情。谢谢。它很好地解决了我问题的第一部分。