Django-filter AND Django-tables2 CheckBoxColumn兼容性

问题描述 投票:1回答:2

我希望通过Django-filter在我返回的表中有一个checkboxcolumn,然后通过复选框选择某些行,然后对这些行执行某些操作。

这是Django-filter:django-filter.readthedocs.io/en/1.1.0这是在Django-tables2中使用的checkboxcolumn的一个例子:stackoverflow.com/questions/10850316 / ...

我的问题是:我可以使用checkboxcolumn来表示通过Django-filter返回的表吗?

谢谢

python mysql django django-filter django-tables2
2个回答
0
投票

从django-tables2的角度来看,django-filter做的是提供不同的(过滤的)查询集。 django-tables2不关心谁组成了查询集,它只是迭代它并使用查询集的模型呈现行。

因此,如果您是表的复选框列,或者使用django-filter,django-tables2将只渲染它获得的任何查询集。

如果要将检查过的记录用于某些自定义过滤器,则必须进行一些手动编码,不支持开箱即用。

简短的回答:是的,你可以使用django-tables2和CheckboxColumn以及django-filter。


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>
© www.soinside.com 2019 - 2024. All rights reserved.