首页 > 解决方案 > 如何将简单的序列化器容纳到模型序列化器中或在 Django rest API 视图中组合 2 个单独的应用程序(模型序列化器)

问题描述

我正在为我的-rest API 使用 Django 和 Django rest 框架(最新版本DepartmentEmployee

在我的项目中创建了 2 个应用程序 DepartmentApp- 有 Model : Department( Id, Department name, Location) , Department-->ModelSerializer最后DepartmentApi使用 Class API (views.py)

EmployeeApp- 有 Model : Employee( Id, Employee name, Job title, Salary, Department ID) , Employee-->ModelSerializer最后EmployeeApi使用 Class API (views.py)

现在在EmployeeApp--> views.py 下,我在def get方法下调用(DepartmentApi using url)。它的目的是获取给定员工对象的部门名称和位置-->部门ID,并将这些属性用作employeeSerializer响应的一部分。我不知道如何实现这一点。我如何将我的响应DepartmentApi用于我的员工序列化器,它是一个Empployee模型。下面是views.py的代码片段EmpployeeApp

def get(self, request, EmployeeId = None):

if EmployeeId:

     employee=Employees.objects.get(EmployeeId=EmployeeId)

     print (employee.Department) # This prints DepartmentID from employee Model

     e_response = requests.get('http://127.0.0.1:8000/department/1') # calling DepartmentAPI

     deptData = e_response.json()

     print (f"{deptData['DepartmentName']} and {deptData['Location']}") 

     employees_serializer = EmployeeDeptSerializer(employee)

     return Response(employees_serializer.data)
else
     employees = Employees.objects.all()

     employees_serializer = EmployeeSerializer(employees, many=True)

return Response(employees_serializer.data)

上面的代码将只包含Employeeobject 。但我的要求是Department在调用 EmployeeApi 时在我的响应中添加名称和位置(对于给定的员工 ID 或所有对象)。

我是 Python 和 Django 的新手。

标签: djangoserializationmodel

解决方案


推荐阅读