Init Django-SHOP
This commit is contained in:
39
weirdlittleempire/filters.py
Normal file
39
weirdlittleempire/filters.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from django.forms.widgets import Select
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django_filters import FilterSet
|
||||
|
||||
from djng.forms import NgModelFormMixin
|
||||
from djng.styling.bootstrap3.forms import Bootstrap3Form
|
||||
|
||||
from shop.filters import ModelChoiceFilter
|
||||
|
||||
from weirdlittleempire.models import Manufacturer, Product
|
||||
|
||||
|
||||
class FilterForm(NgModelFormMixin, Bootstrap3Form):
|
||||
scope_prefix = 'filters'
|
||||
|
||||
|
||||
class ManufacturerFilterSet(FilterSet):
|
||||
manufacturer = ModelChoiceFilter(
|
||||
queryset=Manufacturer.objects.all(),
|
||||
widget=Select(attrs={'ng-change': 'filterChanged()'}),
|
||||
empty_label=_("Any Manufacturer"),
|
||||
help_text=_("Restrict product on this manufacturer only"),
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Product
|
||||
form = FilterForm
|
||||
fields = ['manufacturer']
|
||||
|
||||
@classmethod
|
||||
def get_render_context(cls, request, queryset):
|
||||
# create filter set with bound form, to enable the selected option
|
||||
filter_set = cls(data=request.GET)
|
||||
|
||||
# we only want to show manufacturers for products available in the current list view
|
||||
filter_field = filter_set.filters['manufacturer'].field
|
||||
filter_field.queryset = filter_field.queryset.filter(
|
||||
id__in=queryset.values_list('manufacturer_id'))
|
||||
return dict(filter_set=filter_set)
|
||||
Reference in New Issue
Block a user