2017-12-12 5 views
0

返されたテーブルにDjangoフィルタを介してチェックボックス列を入れ、チェックボックスを使って特定の行を選択し、これらの行で何かを実行したいとします。Django-filterとDjango-tables2 CheckBoxColumnの互換性

これはDjangoのフィルタである:django-filter.readthedocs.io/en/1.1.0これはジャンゴ-tables2に使用されているcheckboxcolumnの例である:

マイをstackoverflow.com/questions/10850316/...質問は:私はDjangoフィルタを介して返されたテーブルのチェックボックス列を使用できますか? Djangoのフィルタはジャンゴ-tables2の観点から何

おかげ

+0

適切な書式のコードを挿入し、例を使用して、リンクして、期待される結果を指定してください。エラー、実際にはテキスト以外のものを指定してください。 –

+0

私はすでに予想される結果を指定しました。それは私の質問の3番目の文です。私の実際のdjangoフィルタコードが本当に必要ですか? – FortranMan

+0

私が言っているのは、SOがコードで質問をしているということだけです。プレーンテキストの長い質問は慎重に見える。おそらく、あなたは他の場所で研究し、実際のスニペットが関わっているときにそれをSOに移すことができます。 –

答えて

0

は異なる(フィルタリングされた)クエリセットを供給しています。 django-tables2は誰がクエリセットを作ったかを気にせず、繰り返し実行し、モデルを使って行をレンダリングしてクエリセットを作成します。

テーブルへのチェックボックスの列、またはdjango-filterを使用するかどうかにかかわらず、django-tables2は取得するクエリセットをレンダリングします。

いくつかのカスタムフィルタでチェックされたレコードを使用する場合は、手作業でコーディングする必要があります。これはそのままではサポートされていません。

短い答え:はい、CheckboxColumnのdjango-tables2をdjango-filterとともに使用できます。

+0

ありがとう、私は2番目のコメントを掲載しましたが、どこに置くべきかわかりませんでした。これは私の最初の投稿ですので、私はそれをすべて理解しようとしています。 – FortranMan

0

全作業コード:

filters.py

from project_django.models import SomeModel 
import django_filters 

class UserFilter(django_filters.FilterSet): 

    class Meta: 
     model = SomeModel 
     fields = ['jobnumber', ] 

views.py

def custom_table(request): 

    user_list = SomeModel.objects.all() 

    data = request.GET.copy() 

    if len(data) == 0: 
     data['jobnumber'] = 0 

    user_filter = UserFilter(data, queryset=user_list) 

    table1 = JobTable(user_filter.qs) 

    # WORKING: custom table with checkbox 
    RequestConfig(request).configure(table1) 

    # WORKING: custom table with checkbox 
    return render(request, 'index.html', {'table1': table1, 'filter': user_filter}) 

tables.py

import django_tables2 as tables 
from .models import SomeModel 


class JobTable(tables.Table): 

    selection = tables.CheckBoxColumn(accessor='pk') 
    #jobnumber = tables.Column() 
    class Meta: 
     model = SomeModel 

index.html

{% load widget_tweaks %} 
{% block content %} 

    <form method="get"> 
    <div class="well"> 
     <h4 style="margin-top: 0">Filter</h4> 
     <div class="row"> 
     <div class="form-group col-sm-4 col-md-3"> 
     {{ filter.form.as_p }} 
     <button type="submit">Search</button> 
     </div> 
     </div> 
     </div> 
    </div> 
    </form> 

    <form action="roll.html" method="post"> 
     {% render_table table1 %} 
     <input type="submit"> 

    </form> 
+0

あなたの例では、 'render_table'に' filter.qs'を渡します。つまり、あなたのdjangoモデルから生成されたテーブルを取得します。カスタム列をテーブルに追加するには、カスタムテーブルオブジェクトを作成する必要があります。これは[チュートリアル](http://django-tables2.readthedocs.io/en/latest/pages/tutorial.html)で説明されています。テーブルインスタンスがコンテキストに入り、 '{%render_table%} 'に渡される必要があります – Jieter

+0

私の"カスタムテーブルオブジェクト "はテーブル全体ですか、あるいはただ1つのカラムだけがモデルに追加されていますか?それが完全なテーブルであれば、フィルタリングされたクエリセットをこのテーブルオブジェクトに渡す必要がありますか?私はdjango-tables2チュートリアルを終えましたが、これは単純なモデル以外のものを渡す指標がない、非常に基本的な例です。 – FortranMan

+0

チェックボックスの列が私のカスタムテーブルに表示されるようになりましたが、django-filterデータをフルモデルではなくテーブルに取り込もうとしました。もし私がそれを働かせるなら、私は完全な作業コードを投稿します。 'tables.py'や' views'を編集するかどうかはわかりませんが、私は試しています。 – FortranMan