Most of the tutorials on Django Rest Framework explains using the Django models and doing CRUD operations. That is a GET
request on user model returns the attributes of user object in JSON format if I use JSON serializer.
I am designing my Django application to process a query and return response. For example, I provide a REST API to get the results of the following query
"Get me the user first name and department whose salary than XXX"
Here are my Django models:
class UserProfile(AbstractUser):
age = models.PositiveIntegerField(_("age"))
salary=models.PositiveIntegerField(_("salary"))
AUTH_USER_MODEL = "profiles.UserProfile"
User = get_user_model()
class Department(models.Model):
users=models.ForeignKey(User)
dept_name = models.CharField(max_length=30)
Now I have the following DTO (Data transfer object):
class CustomResponse(object):
def __init__(self, user_name, salary, dept_name):
self.user_name = user_name
self.salary = salary
self.dept_name=dept_name
In my REST service implemented using DRF, I want the following
@api_view(['GET'])
def getNameandDept(salary):
users=User.objects.filter(salary__gt=salary)
toreturn=[]
for user in users:
response=CustomResponse(user.first_name,user.salary,user.dept_name)
to_return.append(response)
return Response(to_return)
I am not sure what is the right way to implement the above, with the tools that Django rest framework provide.
I am expecting the response something like this
[{user_name:"matt", salary:"5000", dept_name:"ENG"},{user_name:"smith",salary:"4000", dept_name:"HR"}....]
Thanks
EDIT
I was hoping DRF provides out of box tool for this kind of serialization. I have been using JAX-RS API (jersey and RESTeasy) that does this serialization.