Django 我想序列化部门名称以及它';s";id";在一个单一模型序列化程序中。我该怎么做?

Django 我想序列化部门名称以及它';s";id";在一个单一模型序列化程序中。我该怎么做?,django,django-models,django-rest-framework,django-serializer,Django,Django Models,Django Rest Framework,Django Serializer,我想从部门模型中序列化员工模型序列化程序中的“部门名称”(depart_name)和部门ID 在Employee序列化程序中,我想序列化“部门名称”和“部门ID”模型。我在Employee Serializer的Meta类中也提到了部门模型 模型 序列化程序 请记住在员工查询集中选择_related('dept') class Department(models.Model): dept_name = models.CharField(max_length=10) class Emp

我想从部门模型中序列化员工模型序列化程序中的“部门名称”(depart_name)和部门ID

在Employee序列化程序中,我想序列化“部门名称”和“部门ID”模型。我在Employee Serializer的Meta类中也提到了部门模型

模型 序列化程序 请记住在员工查询集中选择_related('dept')

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)

    # .._id suffix django will implement automatically
    dept = 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 = DepartmentSerializer()

    class Meta:
        model = Employee
        fields = ('id',
                  'emp_name',
                  'email',
                  'password',
                  'designation',
                  'dept')

您可以在
EmployeeSerializer
中使用深度。它将返回所有部门对象的字段

================= 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

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)

    # .._id suffix django will implement automatically
    dept = 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 = DepartmentSerializer()

    class Meta:
        model = Employee
        fields = ('id',
                  'emp_name',
                  'email',
                  'password',
                  'designation',
                  'dept')
class DepartmentSerializer(serializers.ModelSerializer):

    class Meta:
        model = Department
        fields = '__all__'


class EmployeeSerializer(serializers.ModelSerializer):

    class Meta:
        model = Employee
        fields = '__all__'
        depth = 1