大多数关于 Django Rest Framework 的教程都解释了如何使用 Django 模型并执行 CRUD 操作。这是一个GET
如果我使用 JSON 序列化程序,对用户模型的请求将以 JSON 格式返回用户对象的属性。
我正在设计 Django 应用程序来处理查询并返回响应。
例如,我提供了一个REST API来获取以下查询的结果
“获取工资高于XXX的用户名和部门”
这是我的 Django 模型:
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)
现在我有以下 DTO(数据传输对象):
class CustomResponse(object):
def __init__(self, user_name, salary, dept_name):
self.user_name = user_name
self.salary = salary
self.dept_name=dept_name
在使用 DRF 实现的 REST 服务中,我想要以下内容
@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)
我不确定使用 Django Rest 框架提供的工具来实现上述内容的正确方法是什么。
我期待这样的回应
[{user_name:"matt", salary:"5000", dept_name:"ENG"},{user_name:"smith",salary:"4000", dept_name:"HR"}....]
Thanks
EDIT
我希望 DRF 为这种序列化提供开箱即用的工具。我一直在使用 JAX-RS API(jersey 和 RESTeasy)来执行此序列化。