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#