Skip to main content

A package for filter all models in django based on query parameters.

Installation:

pip3 install django_rest_framework
pip3 install rest_filter_qp

if you use jalali date:

pip3 install jalali_date

query parameters:

https://example.com/[URL]/?filters[]=[{"key":"KEY1","value":"VALUE1","type":"TYPE"},{"key":"KEY2","value":"VALUE2",,"type":"TYPE"},...]

key : model field name

type : type of filters, you should write a type from these :

FILTER_TYPES = {
		'max':{ # max of a field
			'type' : 'int',
			'len' : 1,
			'extra_keys':[],
			'method' : Max,
			'is_aggregate':True
		},
		'min':{ # min of a field
			'type' : 'int',
			'len' : 1,
			'extra_keys':[],
			'method' : Min,
			'is_aggregate':True
		},
		'bwn':{ # field between 2 value
			'type' : 'list',
			'len' : 2,
			'extra_keys':['gte','lte'],
			'method' : None,
			'is_aggregate':False
		},
		'normal':{ # field equal a value 
			'type' : None,
			'len' : 1,
			'extra_keys':[],
			'method' : None,
			'is_aggregate':False
		},
		'today':{ # objects that created today
			'type' : 'list',
			'len'  : 1,
			'extra_keys' : ['year','month','day'],
			'method' : this_day,
			'is_aggregate':False
		},
		'toweek' : { # objects that created current week (based jalali date)
			'type':'rang',
			'len' : 1,
			'extra_keys' : ['range'],
			'method' : this_week,
			'is_aggregate':False
		},
		'tomonth' : { # objects that created current month
			'type' : 'list',
			'len' : 1,
			'extra_keys' : ['year','month'],
			'method' : this_month,
			'is_aggregate':False
		},
		'asc' : { # order asc
			'type' : 'sort',
			'len' : 1,
			'extra_keys' : [],
			'method' : None,
			'is_aggregate' : False
		},
		'desc' : { # order desc
			'type' : 'sort',
			'len' : 1,
			'extra_keys' : [],
			'method' : None,
			'is_aggregate' : False
		}
	}

for example, you have a model like this :

class Product(models.Model):
    title = models.CharField(max_length=255)
    by_count = models.IntegerField(default=0)
    view_count = models.IntegerField(default=0)
    slug = models.SlugField(max_length=255,unique=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

you should add FilterParams class from rest_filter_qp to your filter_backends[]:

from rest_filter_qp import FilterParams
class ProductView(generics.ListAPIView):
	queryset = Product.objects.all()
	serializer_class = ProductSerializer
	filter_backends = [FilterParams]

now, you want filter product model by title field that value is "Foo" and created today ::

[YOUR_DOMAIN]/products/?filters[]=[{"key":"title","value":"Foo","type":"normal"},{"key":"created_at","value":"","type":"today"}]

if you want a objects with maximum value :

[YOUR_DOMAIN]/products/?filters[]=[{"key":"view_count","value":"","type":"max"}]

Release files for rest-filter-qp 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rest-filter-qp 1.2.1
File Size Uploaded
rest-filter-qp-1.2.1.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rest-filter-qp 1.2.1
File Interpreter ABI Platform
rest_filter_qp-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.7 kB

Release files / rest-filter-qp-1.2.1.tar.gz

Download URL rest-filter-qp-1.2.1.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
518b96ecca7e1a1feb343b55bec2a1425dc55155fd9a2d83ebce960951d5df65
BLAKE2b-256 checksum
How to use checksums
e6b6fe18c69088075bfa65c295ed19f214ee0ba07cbc2a1366aa4bf5f39dfdbe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

Release files / rest_filter_qp-1.2.1-py3-none-any.whl

Download URL rest_filter_qp-1.2.1-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dcda12fcb2c6dfbedab5e04a9202b8eb55fd25f5f70fffba5b6fde0f083210ac
BLAKE2b-256 checksum
How to use checksums
5b32e73e9106b050d420c6d22c6d4f2466bf35cb021038870291146bc6bff393
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page