python - Django REST FRAMEWORK中的外键关系
问题描述
我想创建一个员工对象,其属性包括预先存在的外键(部门)。当我看到员工 api 时..我正在获取部门 ID 而不是部门名称.. .. 请帮忙
模型.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
序列化.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__'
解决方案
你可以使用StringRelatedField()
相同的。
class EmployeeSerializer(serializers.ModelSerializer):
""" Serializer to represent the Chain model """
department = serializers.StringRelatedField()
class Meta:
model = Employee
fields = '__all__'
StringRelatedField
可用于使用其__unicode__
or__str__
方法表示关系的目标。
如果您希望查看与该 FK 相关的所有详细信息,请depth
按以下方式使用
class EmployeeSerializer(serializers.ModelSerializer):
""" Serializer to represent the Chain model """
class Meta:
model = Employee
fields = '__all__'
depth = 1
推荐阅读
- react-native - 当 Redux 状态改变时重新渲染样式
- c++ - 重载c++读取类的方式
- c - 为什么 write() 不打印数字?
- c - 通过静态变量分配的内存会发生内存泄漏吗?
- c++ - IPOPT C++ 接口中的 ReOptimizeTNLP() 函数是什么以及如何使用它?
- python - 如何从 arduino 电源监视器打印出多个数据图?
- regex - 为什么这个 Apache Vanity URL 重定向不起作用?
- ansible - 使编写 Nagios 对象以监控 Cisco 接口的 Ansible 更高效
- python - 创建一个计数器,当数据帧中的值为 1 时递增
- python - 为什么我的插入排序在只使用一个数组时会影响我的两个数组?