Python 发出POST请求DRF时,此字段是必需的错误

Python 发出POST请求DRF时,此字段是必需的错误,python,django,django-rest-framework,Python,Django,Django Rest Framework,当我试图通过浏览器发布时,请求无法保存字段组织 发帖照片: 请在下面提供我的代码 serializers.py: class DescriptionOrganizationSerializer(serializers.PrimaryKeyRelatedField, serializers.ModelSerializer): class Meta: model = Organization fields = ("id", "org_name") cl

当我试图通过浏览器发布时,请求无法保存字段
组织

发帖照片:

请在下面提供我的代码

serializers.py

class DescriptionOrganizationSerializer(serializers.PrimaryKeyRelatedField, serializers.ModelSerializer):

    class Meta:
        model = Organization
        fields = ("id", "org_name")


class DepartmentSerializer(serializers.ModelSerializer):
    emp_count_for_dep = serializers.SerializerMethodField()
    organization = DescriptionOrganizationSerializer(queryset=Organization.objects.all())

    class Meta:
        model = Department
        fields = '__all__'
class Organization(models.Model):
    org_name = models.CharField(max_length=100)

    def __str__(self):
        return self.org_name


class Department(models.Model):
    dep_name = models.CharField(max_length=100)
    organization = models.ForeignKey(Organization, on_delete=models.CASCADE,
                                     related_name='departments')

    def __str__(self):
        return self.dep_name
class DepartmentView(viewsets.ModelViewSet):

    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer
models.py

class DescriptionOrganizationSerializer(serializers.PrimaryKeyRelatedField, serializers.ModelSerializer):

    class Meta:
        model = Organization
        fields = ("id", "org_name")


class DepartmentSerializer(serializers.ModelSerializer):
    emp_count_for_dep = serializers.SerializerMethodField()
    organization = DescriptionOrganizationSerializer(queryset=Organization.objects.all())

    class Meta:
        model = Department
        fields = '__all__'
class Organization(models.Model):
    org_name = models.CharField(max_length=100)

    def __str__(self):
        return self.org_name


class Department(models.Model):
    dep_name = models.CharField(max_length=100)
    organization = models.ForeignKey(Organization, on_delete=models.CASCADE,
                                     related_name='departments')

    def __str__(self):
        return self.dep_name
class DepartmentView(viewsets.ModelViewSet):

    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer
views.py

class DescriptionOrganizationSerializer(serializers.PrimaryKeyRelatedField, serializers.ModelSerializer):

    class Meta:
        model = Organization
        fields = ("id", "org_name")


class DepartmentSerializer(serializers.ModelSerializer):
    emp_count_for_dep = serializers.SerializerMethodField()
    organization = DescriptionOrganizationSerializer(queryset=Organization.objects.all())

    class Meta:
        model = Department
        fields = '__all__'
class Organization(models.Model):
    org_name = models.CharField(max_length=100)

    def __str__(self):
        return self.org_name


class Department(models.Model):
    dep_name = models.CharField(max_length=100)
    organization = models.ForeignKey(Organization, on_delete=models.CASCADE,
                                     related_name='departments')

    def __str__(self):
        return self.dep_name
class DepartmentView(viewsets.ModelViewSet):

    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer
错误:

因此,我认为这可能是因为我添加了
queryset=Organization.objects.all()
PrimaryKeyRelatedField
——否则,我无法选择
Organization
字段并出现另一个错误(我解决了它,但在这里提供它,因为这可以帮助您更好地理解我的代码):

另一个想法是组织模型中的
ForeignKey
需要更改为类似于
OneToManyField
,但我不确定


希望您能看到,我在这里错过了什么

重写
类的
to_representation()
方法,并通过仅继承序列化程序.ModelSerializer
类来创建
描述组织序列化程序

class DescriptionOrganizationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Organization
        fields = ("id", "org_name")


class DepartmentSerializer(serializers.ModelSerializer):
    emp_count_for_dep = serializers.SerializerMethodField()

    class Meta:
        model = Department
        fields = '__all__'

    def to_representation(self, instance):
        rep = super().to_representation(instance)
        rep['organization'] = DescriptionOrganizationSerializer(instance.organization).data
        return rep
class DescriptionOrganizationSerializer(serializers.ModelSerializer):
类元:
模型=组织
字段=(“id”、“组织名称”)
类DepartmentSerializer(serializers.ModelSerializer):
emp\u count\u for\u dep=序列化程序。SerializerMethodField()
类元:
型号=部门
字段='\uuuu所有\uuuu'
def到_表示(自身、实例):
rep=super().to_表示(实例)
rep['organization']=DescriptionOrganizationSerializer(instance.organization).data
退货代表

参考

非常感谢!我在另一个序列化程序上复制了这种方法,这里有两个字段,而不是一个,而且仍然有效!在检查参考资料后,我在
序列化程序的完整表示
(缺少字母
t
)中发现了打字错误,但无法编辑一个字母