Reputation: 265
I would like to create an employee object whose attributes include pre-existing foreign key (Department).when i see employee api.. i am getting department id instead of department name.... please help
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__'
Upvotes: 2
Views: 1021
Reputation: 88459
You could use StringRelatedField()
for the same.
class EmployeeSerializer(serializers.ModelSerializer):
""" Serializer to represent the Chain model """
department = serializers.StringRelatedField()
class Meta:
model = Employee
fields = '__all__'
StringRelatedField
may be used to represent the target of the relationship using its__unicode__
or__str__
method.
If you wish to see all details related to that FK, use depth
as below
class EmployeeSerializer(serializers.ModelSerializer):
""" Serializer to represent the Chain model """
class Meta:
model = Employee
fields = '__all__'
depth = 1
Upvotes: 2