Filters#

Contains a Class for adding filters to the Django QuerySet.

class fma_django_api.v1.filters.FederatedModelFilter(data=None, queryset=None, *, request=None, prefix=None)#

Bases: FilterSet

Django-filter specifically designed to make allow_aggregation searchable.

filter_allow_aggregation(queryset, name, value)#

Construct the full lookup expression.

Parameters:
  • queryset (Class) – a Django QuerySet class object

  • name (Any) – Additional flag, yet to be implemented

  • value (Any) – A flag to determine whether or not to include the queryset

Returns:

a Django QuerySet class object

Return type:

django.db.models.QuerySet

class Meta#

Bases: object

model#

alias of FederatedModel

fields = ['allow_aggregation']#
FILTER_DEFAULTS = {<class 'django.db.models.fields.AutoField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.CharField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.TextField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.BooleanField'>: {'filter_class': <class 'django_filters.filters.BooleanFilter'>}, <class 'django.db.models.fields.DateField'>: {'filter_class': <class 'django_filters.filters.DateFilter'>}, <class 'django.db.models.fields.DateTimeField'>: {'filter_class': <class 'django_filters.filters.DateTimeFilter'>}, <class 'django.db.models.fields.TimeField'>: {'filter_class': <class 'django_filters.filters.TimeFilter'>}, <class 'django.db.models.fields.DurationField'>: {'filter_class': <class 'django_filters.filters.DurationFilter'>}, <class 'django.db.models.fields.DecimalField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.SmallIntegerField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.IntegerField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.PositiveIntegerField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.PositiveSmallIntegerField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.FloatField'>: {'filter_class': <class 'django_filters.filters.NumberFilter'>}, <class 'django.db.models.fields.NullBooleanField'>: {'filter_class': <class 'django_filters.filters.BooleanFilter'>}, <class 'django.db.models.fields.SlugField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.EmailField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.FilePathField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.URLField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.GenericIPAddressField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.CommaSeparatedIntegerField'>: {'filter_class': <class 'django_filters.filters.CharFilter'>}, <class 'django.db.models.fields.UUIDField'>: {'filter_class': <class 'django_filters.filters.UUIDFilter'>}, <class 'django.db.models.fields.related.OneToOneField'>: {'filter_class': <class 'django_filters.filters.ModelChoiceFilter'>, 'extra': <function <lambda>>}, <class 'django.db.models.fields.related.ForeignKey'>: {'filter_class': <class 'django_filters.filters.ModelChoiceFilter'>, 'extra': <function <lambda>>}, <class 'django.db.models.fields.related.ManyToManyField'>: {'filter_class': <class 'django_filters.filters.ModelMultipleChoiceFilter'>, 'extra': <function <lambda>>}, <class 'django.db.models.fields.reverse_related.OneToOneRel'>: {'filter_class': <class 'django_filters.filters.ModelChoiceFilter'>, 'extra': <function <lambda>>}, <class 'django.db.models.fields.reverse_related.ManyToOneRel'>: {'filter_class': <class 'django_filters.filters.ModelMultipleChoiceFilter'>, 'extra': <function <lambda>>}, <class 'django.db.models.fields.reverse_related.ManyToManyRel'>: {'filter_class': <class 'django_filters.filters.ModelMultipleChoiceFilter'>, 'extra': <function <lambda>>}}#
base_filters = {'allow_aggregation': <django_filters.filters.BooleanFilter object>}#
declared_filters = {'allow_aggregation': <django_filters.filters.BooleanFilter object>}#
property errors#

Return an ErrorDict for the data provided for the underlying form.

classmethod filter_for_field(field, field_name, lookup_expr=None)#
classmethod filter_for_lookup(field, lookup_type)#
filter_queryset(queryset)#

Filter the queryset with the underlying form’s cleaned_data. You must call is_valid() or errors before calling this method.

This method should be overridden if additional filtering needs to be applied to the queryset before it is cached.

property form#
classmethod get_fields()#

Resolve the ‘fields’ argument that should be used for generating filters on the filterset. This is ‘Meta.fields’ sans the fields in ‘Meta.exclude’.

classmethod get_filter_name(field_name, lookup_expr)#

Combine a field name and lookup expression into a usable filter name. Exact lookups are the implicit default, so “exact” is stripped from the end of the filter name.

classmethod get_filters()#

Get all filters for the filterset. This is the combination of declared and generated filters.

get_form_class()#

Returns a django Form suitable of validating the filterset data.

This method should be overridden if the form class needs to be customized relative to the filterset instance.

is_valid()#

Return True if the underlying form has no errors, or False otherwise.

property qs#