我有两个简单的模型,以及用于Course
和Department
的序列化器,如下所示:(一门课程属于一个部门,从Course
到Department
有多对一的关系)
# models.py
# Department Model
class Department(models.Model):
name = models.CharField(max_length=256)
location = models.CharField(max_length=1024)
# Course Model
class Course(models.Model):
code = models.CharField(max_length=15, unique=True)
name = models.CharField(max_length=15, unique=True)
department = models.ForeignKey(Department, on_delete=models.CASCADE, default=None,
null=True, blank=True)
###################################
# serializers.py
# Department serializer
class DepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = ['id', 'name']
# Course serializer
class CourseSerializer(serializers.ModelSerializer):
department = DepartmentSerializer()
class Meta:
model = Course
fields = '__all__'
[通过SQL查询添加了一些课程之后,我向端点GET
发出了localhost:8000/courses/
请求,它给出了预期的结果。
[
{
"id": 1,
"code": "SS240",
"name": "Sociology",
"department": {
"id": 1,
"name": "Humanities"
}
},
{
"id": 2,
"code": "CS310",
"name": "Data Structures and Algorithms",
"department": {
"id": 5,
"name": "Computer Sciences"
}
}
]
我想向终点POST
发出localhost:8000/courses/
请求。说,我有一个部门,其中name = Computer Sciences和id = 5。我想添加带有[[code = CS330,名称=面向对象设计,部门=计算机科学]的课程。我应该如何写请求的正文?
以下内容由于部门的嵌套表示而出现错误
{
"code": "CS330",
"name": "Object Oriented Design",
"department": 5
}
应该是这样吗?
{ "code": "CS330", "name": "Object Oriented Design", "department": { "id": 5, "name": "Computer Sciences" } }
我应该如何重写.create()
方法?
to_representation(...)