Django REST FRAMEWORK中的外键关系

时间:2018-07-09 05:02:58

标签: python django django-rest-framework

我想创建一个员工对象,其属性包括预先存在的外键(部门)。当我看到员工api时。我正在获取部门ID而不是部门名称。enter image description here ..请帮助

models.py

class Department(models.Model):
name = models.CharField(max_length= 20)
def __str__(self):
    return self.name

class Employee(models.Model):
employee_name = models.CharField(max_length= 20)
surname = models.CharField(max_length= 20)
address = models.CharField(max_length  = 50)
qualification = models.CharField(max_length = 30)
contact_num = PhoneNumberField()
department = models.ForeignKey(Department, on_delete=models.PROTECT)
def __str__(self):
    return self.employee_name

serialize.py

class DepartmentSerializer(serializers.ModelSerializer):
""" Serializer to represent the Chain model """
    class Meta:
        model = Department
        fields = '__all__'


class EmployeeSerializer(serializers.ModelSerializer):
    """ Serializer to represent the Chain model """
    class Meta:
        model = Employee
        fields = '__all__'

1 个答案:

答案 0 :(得分:1)

您可以使用StringRelatedField()

class EmployeeSerializer(serializers.ModelSerializer):
    """ Serializer to represent the Chain model """
    department = serializers.StringRelatedField()
    class Meta:
        model = Employee
        fields = '__all__'
  

StringRelatedField 可以用来表示关系的目标,使用其 __unicode__ __str__ 方法。



如果您希望查看与该FK相关的所有详细信息,请使用depth,如下所示

class EmployeeSerializer(serializers.ModelSerializer):
    """ Serializer to represent the Chain model """

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