class UserFilter(FilterSet): username = filters.CharFilter(field_name='username') email = filters.CharFilter(field_name='email') class Meta: model = User fields = []
class UserFilter(FilterSet): username = filters.CharFilter(name='username') email = filters.CharFilter(name='email') last_login = filters.AllLookupsFilter() is_active = filters.BooleanFilter(name='is_active') class Meta: model = User
class TripFilterSet(FilterSet): seats_left__gte = filters.NumberFilter(label="Assentos restantes ou mais", method='get_seats_left') origin_radius = filters.NumberFilter( label="Raio de pesquisa na origem em km", method='get_radius') destination_radius = filters.NumberFilter( label="Raio de pesquisa no destino em km", method='get_radius') origin = filters.CharFilter(label="Endereço de origem", method='get_origin') destination = filters.CharFilter(label="Endereço de destino", method='get_destination') def get_seats_left(self, qs, name, value): seats_left = F('max_seats') - Coalesce( Sum('passengers__seats', filter=~Q(passengers__status="denied")), 0) qs = qs.annotate(s_left=seats_left) val = value expr = name.split('__')[1] if len(name.split('__')) > 1 else 'exact' return qs.filter(**{f's_left__{expr}': val}) def get_radius(self, qs, name, value): return qs def get_origin(self, qs, name, value): radius = self.data.get('origin_radius', '10') if not radius: radius = '10' radius = min(max(float(radius), 0.05), 20) pipe = RequestPipeline('origin', self.request) result = pipe.search(value) if result is None: return qs.none() return qs.filter(origin_point__distance_lte=(result.point, D(km=radius))) def get_destination(self, qs, name, value): radius = self.data.get('destination_radius', '10') if not radius: radius = '10' radius = min(max(float(radius), 0.05), 20) pipe = RequestPipeline('destination', self.request) result = pipe.search(value) if result is None: return qs.none() return qs.filter(destination_point__distance_lte=(result.point, D(km=radius))) class Meta: model = Trip fields = { 'price': ['lte'], 'datetime': ['exact', 'gte', 'lte'], 'auto_approve': ['exact'] }
class AFilter(FilterSet): title = filters.CharFilter(name='title') b = RelatedFilter('tests.testapp.filters.BFilter', name='b') class Meta: model = A fields = []
class F(FilterSet): pk = filters.AutoFilter(field_name='id', lookups=['exact']) individual = filters.CharFilter() class Meta: model = Note fields = []
class CFilter(FilterSet): title = filters.CharFilter(name='title') a = RelatedFilter(AFilter, name='a') class Meta: model = C fields = []
class AFilter(FilterSet): title = filters.CharFilter(field_name='title') b = RelatedFilter('BFilter', field_name='b', queryset=B.objects.all()) class Meta: model = A fields = []
class NoteFilterWithRelated(FilterSet): title = filters.CharFilter(field_name='title') author = RelatedFilter(UserFilter, field_name='author', queryset=User.objects.all()) class Meta: model = Note fields = []
class PageFilterWithAliasedNestedRelated(FilterSet): title = filters.CharFilter(field_name='title') two_pages_back = RelatedFilter(PostFilter, field_name='previous_page__previous_page', queryset=Page.objects.all()) class Meta: model = Page fields = []
class CoverFilterWithRelatedMethodFilter(FilterSet): comment = filters.CharFilter(field_name='comment') post = RelatedFilter(PostFilter, field_name='post', queryset=Post.objects.all()) class Meta: model = Cover fields = []
class UserFilterWithAll(FilterSet): username = AllLookupsFilter(field_name='username') email = filters.CharFilter(field_name='email') class Meta: model = User fields = []
class NoteFilter(FilterSet): title = filters.CharFilter(name='title') author = filters.RelatedFilter(UserFilter, name='author') class Meta: model = Note fields = []
class BlogPostFilter(FilterSet): title = filters.CharFilter(field_name='title') tags = RelatedFilter(TagFilter, field_name='tags', queryset=Tag.objects.all()) class Meta: model = BlogPost fields = []
class PageFilterWithRelated(FilterSet): title = filters.CharFilter(field_name='title') previous_page = RelatedFilter(PostFilter, field_name='previous_page', queryset=Post.objects.all()) class Meta: model = Page fields = []
class BFilter(FilterSet): name = filters.CharFilter(field_name='name') c = RelatedFilter('CFilter', field_name='c', queryset=C.objects.all()) class Meta: model = B fields = []
class NoteFilterWithRelatedAllDifferentFilterName(FilterSet): title = filters.CharFilter(field_name='title') writer = RelatedFilter(UserFilterWithAll, field_name='author', queryset=User.objects.all()) class Meta: model = Note fields = []
class CFilter(FilterSet): title = filters.CharFilter(field_name='title') a = RelatedFilter('AFilter', field_name='a', queryset=A.objects.all()) class Meta: model = C fields = []
class NoteFilter(FilterSet): # A simpler version of NoteFilter that doesn't use autofilter expansion title = filters.CharFilter() author = filters.RelatedFilter(UserFilter) class Meta: model = Note fields = []
class AFilter(FilterSet): title = filters.CharFilter(name='title') b = RelatedFilter('tests.testapp.filters.BFilter', name='b', queryset=B.objects.all()) class Meta: model = A fields = []
class UserFilter(FilterSet): username = AutoFilter(field_name='username', lookups='__all__') email = filters.CharFilter(field_name='email') last_login = AutoFilter(lookups='__all__') is_active = filters.BooleanFilter(field_name='is_active') posts = RelatedFilter('PostFilter', field_name='post', queryset=Post.objects.all()) class Meta: model = User fields = []
class TagFilter(BaseFilterSet): id_not_in = filters.CharFilter(method='id_not_in_function') def id_not_in_function(self, qs, name, value): ids = [x.strip() for x in value.split(',')] return qs.filter(~Q(id__in=ids)) class Meta: model = Tag fields = { "label": FilterFields.String, "system_created": FilterFields.Boolean }
class TemplateCategoryListFilter(FilterSet): template = filters.RelatedFilter(TemplateListFilter, field_name="template__id", queryset=Template.objects.all()) active = filters.BooleanFilter() company = filters.NumberFilter() parent = filters.CharFilter() class Meta: Model = TemplateCategory fields = [ 'active', 'company', 'template', 'parent', ]
class CardsFilter(FilterSet): hero = filters.CharFilter(field_name="hero", method="filter_hero") class Meta: model = Card fields = [ "standard", "hero", "card_type", "quality", "race", "expansion", "cost", "keywords", ] # filtrar id hero def filter_hero(self, qs, name, value): """ QS -> Card.objects.filter(name="Prophet") name -> hero value -> id of the hero to search, for example 2 """ return qs.filter(heroes=value)
class NoteFilter(FilterSet): title = filters.CharFilter()
class UserFilter(FilterSet): username = filters.CharFilter()
class DFUserFilter(django_filters.FilterSet): email = filters.CharFilter(field_name='email') class Meta: model = User fields = '__all__'
class NoteFilterWithRelatedAll(FilterSet): title = filters.CharFilter(name='title') author = RelatedFilter(UserFilterWithAll, name='author') class Meta: model = Note
class NoteFilterWithRelatedAllDifferentFilterName(FilterSet): title = filters.CharFilter(name='title') writer = RelatedFilter(UserFilterWithAll, name='author') class Meta: model = Note
class UserFilterWithAlias(FilterSet): name = filters.CharFilter(field_name='username') class Meta: model = User fields = []
class UserFilterWithDifferentName(FilterSet): name = filters.CharFilter(field_name='username') class Meta: model = User fields = []