在Django中,通过嵌套序列化器在两个模型中创建记录,两个外键指向同一个模型。

问题描述 投票:0回答:1

使用嵌套序列器,通过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()代替。"

先谢谢你

django nested foreign-keys serializer drf-writable-nested
1个回答
0
投票

删除many_True

class PeopleSerializer(WritableNestedModelSerializer):
    teacher = DepartmentSerializer(write_only=True)
    student = DepartmentSerializer(write_only=True)
© www.soinside.com 2019 - 2024. All rights reserved.