2

I use django_tables2 with django_filter according to django_tables2 tutorial:

#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)

Also I want to use django_select2 in django_filter: I want to have a filter's field and its ModelSelect2Widget with the same filter as in FilteredCarListView.get_queryset(self).

For filter's field I found this decision (I guess it is not DRY):

# 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'])       

But how to limit choises in ModelSelect2Widget to display current user's cars only?

Vit Amin
  • 574
  • 5
  • 20

0 Answers0