2017-09-06 37 views
0

私はDjangoテーブル2とクリスピーのフォームを使用してフィルタ付きのテーブルを表示しようとしています。 Django Tables2 Filter

I持って、次のファイル:

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(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',} 

forms.py

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'), 
    ) 

table.py

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 

その結果、私はこれを取得:

enter image description here

私が欲しいものです:

  1. は単語がラベルに
  2. は、フィルタフォームフィールドをインラインを持っている "が含まれて" 除外

私はそれを成功させるために多くの方法を試みました。

+0

は、フォームのレイアウトを変更することとは別問題であるので、これは二つの異なる質問として良いかもしれません。成功せずに多くの方法を試してみたら、あなたが試したものを見て、人々がうまくいかないものを提案しないようにするのは良いことです。おかげさまで – Alasdair

答えて

0

それはあなたがCharFilterlabelを設定することにより、ラベルを設定することができているかのように見えます:ドキュメントは、それは、高度な設定や対象だと警告しているが、あなたはまた、FILTERS_VERBOSE_LOOKUPS設定を変更することができているかのよう

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 
+0

私の質問の最初の部分をうまく解決しました。 –

関連する問題