Прямо сейчас я выполнил функцию фильтрации, используя django-filters.Но при отправке формы пусто, ее выборка всех записей.Мой код работает нормально.Я ограничил django-фильтр отображением всех записей при запуске страницы. Также я не хочу отображать все записи при отправке пустой формы.
version_filter.html
<form action="" method="GET">
<button class="btn btn-primary btn-sm" type="submit">Submit</button>
{{filters.form.as_table}}
</form>
просмотров.py
def bfs_version_filter(request):
version_obj = bfs_versions.objects.all()
filter_obj = version_filter(request.GET, queryset = version_obj)
return render(request, 'bfslite/version_filter.html', {
'filters' : filter_obj,})
filter.py
class version_filter(django_filters.FilterSet):
bfs_version_code = django_filters.CharFilter(lookup_expr = 'icontains', label = "Version")
bfs_version_status = django_filters.ChoiceFilter(field_name = "bfs_version_status", choices=TASK_STATUS, lookup_expr='exact', label = "Version Status")
bfs_version_end_date = django_filters.DateFilter(widget=forms.widgets.DateInput(attrs={'type':'date'}), label= "End Date")
bfs_version_uploaded_on = django_filters.DateRangeFilter(label= "Uploaded on")
bfs_task_code__bfs_client_eta = django_filters.DateFilter(widget=forms.widgets.DateInput(attrs={'type':'date'}), label= "Client Date")
bfs_shot_code__bfs_shot_code = django_filters.CharFilter(lookup_expr = 'exact', label = "Shot")
bfs_task_code__bfs_task_name = django_filters.CharFilter(lookup_expr = 'exact', label = "Task")
#payable and paid
bfs_version_payable = django_filters.BooleanFilter(field_name='bfs_version_payable', lookup_expr= 'exact', label = "Payable")
bfs_version_paid = django_filters.BooleanFilter(field_name='bfs_version_paid', lookup_expr= 'exact', label = "Paid")
def __init__(self, *args, **kwargs):
super(version_filter, self).__init__(*args, **kwargs)
if self.data == {}:
self.queryset = self.queryset.none()
class Meta:
model=bfs_versions
fields=[
'bfs_version_code',
'bfs_version_status',
'bfs_version_end_date',
'bfs_version_uploaded_on',
'bfs_task_code__bfs_client_eta',
'bfs_shot_code__bfs_shot_code',
'bfs_task_code__bfs_task_name',
'bfs_version_payable',
'bfs_version_paid',
]