【发布时间】:2015-04-03 13:11:30
【问题描述】:
大多数关于 Django Rest Framework 的教程都解释了使用 Django 模型和进行 CRUD 操作。如果我使用 JSON 序列化程序,那么用户模型上的 GET 请求会以 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"}....]
谢谢
编辑
我希望 DRF 为这种序列化提供开箱即用的工具。我一直在使用执行此序列化的 JAX-RS API(jersey 和 RESTeasy)。
【问题讨论】:
标签: python json django django-rest-framework