我是 django 的新手。我正在研究一个休息 api。我有一个可选的"is"关系,即学生是雇员。我正在尝试序列化这两个模型,以便获得组合的 json 结果。请让我知道是否有人可以帮助我。谢谢
class Employee(models.Model):
full_name=models.CharField(max_length=100,blank=True)
email_id=models.EmailField(max_length=100,blank=True)
mobile_no=models.CharField(max_length=11,blank=True)
is_job_ready=models.BooleanField(False)
type=models.CharField(max_length=20,blank=True)
location_preference=models.CharField(max_length=20,blank=True)
class Student(models.Model):
college=models.CharField(max_length=100)
year=models.CharField(max_length=20)
is_with_college=models.BooleanField()
employee=models.OneToOneField(Employee,primary_key=True)
最佳答案
Django REST framework有一些用于序列化嵌套对象的好工具。
您需要他们所说的 Nested Relationship .像这样 -
from rest_framework import serializers
# define your models here ...
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = ('full_name', 'email_id', 'mobile_no', 'is_job_ready', 'type', 'location_preference')
class StudentSerializer(serializers.ModelSerializer):
employee = EmployeeSerializer(read_only = True)
class Meta:
model = Student
fields = ('college', 'year', 'is_with_college', 'employee')
然后,您可以加载您的序列化程序并像这样使用它 -
from myapp.models import StudentSerializer
student = Student.objects.first()
serializer = StudentSerializer(student)
serializer.data
# { 'college': 'Naropa University',
# 'is_with_college': True,
# 'year': '2015'}
# 'employee': {
# 'full_name' : 'Chogyam Trungpa',
# 'email_id' : 'teacher@naropa.edu',
# 'mobile_no' : '555-555-5555',
# 'is_job_ready' : True,
# 'type' :'Teacher',
# 'location_preference' : 'Boulder, CO'
# }
# }
关于python - 序列化具有一对一关系的对象 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548337/