Request Query Parameters Like Django
Using Double Underscore (__) for Filtering
In Arkos, we've added the option of using a different filtering convention inspired by Django's ORM (It does not removes the normal one), where you use double underscores (__) in query parameters to specify complex filtering conditions. This makes querying more intuitive and consistent, while also simplifying how the backend processes these queries.
How Does It Work?
When a request is made with a query parameter like price__gte=50, the framework translates this into a nested structure, allowing it to map directly to a Prisma query.
For example:
GET /api/products?price__gte=50&price__lt=200
In this case:
price__gte=50tells the framework that we want to filter products where the price is greater than or equal to 50.price__lt=200means we want products with a price less than 200.
How It’s Translated Internally:
The framework reads the query parameters, and for each condition using __, it wraps the field in an object to match Prisma's query structure. So, for the example above:
-
price__gte=50is translated into:{
price: {
gte: 50;
}
} -
price__lt=200is translated into:{
price: {
lt: 200;
}
}
Thus, when combined, the framework generates:
{
price: {
gte: 50,
lt: 200
}
}
This nested structure matches what Prisma expects when querying the database.
Why Is This Useful?
- Cleaner Queries: Using
__makes it easier to pass complex conditions in URLs without manually managing deeply nested query objects. - Flexible Conditions: You can chain multiple conditions for any field, like
price__gte,price__lt, orname__contains, and they’ll be wrapped accordingly to create the correct nested structure for the Prisma query.