У меня есть представление, AccoutList
, которое пытается отобразить таблицу django_table2. Исходный код представления:
class AccountList(SingleTableMixin, FilterView):
model = Account
table_class = AccountTable
template_name = 'accounts/account_list.html'
context_table_name = 'object_list'
ordering = ['vps']
filterset_class = AccountFilter
Этот вид в настоящее время использует этот набор фильтров (из django_filters):
import django_filters
from accounts.models import Account
class AccountFilter(django_filters.FilterSet):
class Meta:
model = Account
fields = ['is_suspended', 'is_abandoned']
is_suspended = django_filters.BooleanFilter(name='is_suspended', initial='False')
is_abandoned = django_filters.BooleanFilter(name='is_abandoned', initial='False')
def __init__(self, data=None, *args, **kwargs):
# if filterset is bound, use initial values as defaults
if data is not None:
# get a mutable copy of the QueryDict
data = data.copy()
for name, f in self.base_filters.items():
initial = f.extra.get('initial')
# filter param is either missing or empty, use initial as default
if not data.get(name) and initial:
data[name] = initial
super().__init__(data, *args, **kwargs)
Используя этот шаблон:
{% if filter %}
<form action="" method="get" class="form form-inline">
{{ filter.form.as_p }}
<input type="submit" />
</form>
{% endif %}
{% render_table object_list %}
{% endblock %}
Это мой из моих urls.py
path('', login_required(AccountList.as_view())),
Когда я захожу на мою страницу, 127.0.0.1:8000
, я вижу, что фильтры не установлены:
Но тогда, если я сделаю 127.0.0.1:8000?page=1
, я вижу, что фильтры правильно инициализированы:
Что приводит к тому, что мои фильтры не имеют значения по умолчанию, когда к моему URL не добавлен page = 1?