使用嵌套序列器,通过foreingn键关系在同一个表Department上创建两条记录。该部门的两条记录同时在People表上创建。
class Department(BaseModel):
name = models.CharField(max_length=50)
age = models.PositiveIntegerField()
class People(BaseModel):
teacher = models.ForeignKey(Department, on_delete=models.PROTECT,related_name='teacher')
student = models.ForeignKey(Department, on_delete=models.PROTECT, related_name='student')
available_seats = models.PositiveIntegerField(default=0)
class DepartmentSerializer(serializers.ModelSerializer):
class Meta:
model = Department
fields = '__all__'
class PeopleSerializer(WritableNestedModelSerializer):
teacher = DepartmentSerializer(many=True, write_only=True)
student = DepartmentSerializer(many=True, write_only=True)
available_seats = models.PositiveIntegerField()
class Meta:
model = People
fields = '__all__'
在这里,我需要接受这个输入,并在人员和部门表中创建记录。
{
"available_seats":100,
"teacher": [{
"name": John,
"age" : 37
}],
"student": [{
"name": John,
"age" : 37
}]
}
但我得到了这个错误 "禁止直接赋值到相关集合的反面。使用student.set()代替。"
先谢谢你
删除many_True
class PeopleSerializer(WritableNestedModelSerializer):
teacher = DepartmentSerializer(write_only=True)
student = DepartmentSerializer(write_only=True)