Я использую django_tables2 с django_filter в соответствии с руководством django_tables2:
#views.py
from django_filters.views import FilterView
from django_tables2.views import SingleTableMixin
class FilteredCarListView(SingleTableMixin, FilterView):
table_class = CarTable
model = Car
template_name = 'template.html'
filterset_class = CarFilter
def get_queryset(self):
return self.model.objects.filter(owner_id=request.user.id)
Также я хочу использовать django_select2 в django_filter: я хочу иметь поле фильтра и его ModelSelect2Widget с тем же фильтром, что и в Filtered.(self).
Для поля фильтра я нашел это решение (думаю, это не СУХОЙ):
# filters.py
from .models import Car
from django_select2.forms import ModelSelect2Widget
def get_cars(request):
return Car.objects.filter(owner_id=request.user.id)
class CarFilter(django_filters.FilterSet):
car = django_filters.ModelChoiceFilter(
queryset = get_cars,
field_name='car',
widget = ModelSelect2Widget(
model = Car,
search_fields=['car__icontains'])
Но как ограничить выбор в ModelSelect2Widget для отображения только автомобилей текущего пользователя?