我想在部门模型的Employee Model Serializer中序列化“部门名称”(dept_name)以及部门ID(id)
在Employee Serializer中,我要序列化“部门名称”和“部门ID”模型。我在Employee Serializer的Meta类中也提到了部门模型
class Department(models.Model):
dept_name = models.CharField(max_length=10)
class Employee(models.Model):
emp_name = models.CharField(max_length=15)
email = models.EmailField(unique=True)
password = models.CharField(max_length=14)
designation = models.CharField(max_length=20)
dept_id = models.ForeignKey(Department, on_delete=models.SET_NULL, null=True, blank=True)
class Meta:
ordering = ('id',)
def __str__(self):
return self.emp_name
class DepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = [
'id',
'dept_name',
]
class EmployeeSerializer(serializers.ModelSerializer):
dept_id = serializers.SlugRelatedField(queryset=Department.objects.all(), slug_field='dept_name')
deptname = DepartmentSerializer()
class Meta:
model = Employee,Department
fields = [
'id',
'emp_name',
'email',
'password',
'designation',
'dept_id',
'deptname',
]
答案 0 :(得分:0)
在您的员工查询集中记住select_related('dept')。
<canvas id="canvas"></canvas>
答案 1 :(得分:0)
您可以在EmployeeSerializer
中使用depth in。它将返回所有部门对象的字段。
================= depth = 1 =>返回一级深度。 depth = 2 =>返回两个深度级别。
像这样:
class DepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = '__all__'
depth = 1