Django rest framework 数据未传递到DRF中的嵌套序列化程序

Django rest framework 数据未传递到DRF中的嵌套序列化程序,django-rest-framework,django-serializer,Django Rest Framework,Django Serializer,我正在尝试对我的公司概要文件序列化程序的元字段进行验证,但是数据没有传递到嵌套的序列化程序中。 我收到一个错误:AttributeError:“CompanyProfileMetaSerializer”对象没有属性“initial\u data” 这是我的公司配置文件序列化程序:- class CompanyProfileSerializer(serializers.ModelSerializer): logo = ImageLinkSerializer(read_only=True)

我正在尝试对我的公司概要文件序列化程序的元字段进行验证,但是数据没有传递到嵌套的序列化程序中。 我收到一个错误:AttributeError:“CompanyProfileMetaSerializer”对象没有属性“initial\u data” 这是我的公司配置文件序列化程序:-

class CompanyProfileSerializer(serializers.ModelSerializer):
    logo = ImageLinkSerializer(read_only=True)
    company_locations = CompanyLocationSerializer(many=True, read_only=True)
    meta = CompanyProfileMetaSerializer(required=False)

    def update(self, instance, validated_data):
        meta = validated_data.get('meta')
        established_data = meta['established']
        if established_data:
            instance.meta['established'] = instance.meta['established']
            instance.meta['social_links'] = meta['social_links']
        instance.description = validated_data.get('description', instance.description)
        instance.save()
        return instance

    class Meta:
        model = Company
        fields = ['name', 'logo', 'company_locations', 'kind', 'strength', 'description', 'meta']
        read_only_fields = ['name', 'kind', 'strength']
class CompanyProfileMetaSerializer(serializers.Serializer):
    established = serializers.DateField(read_only=True)
    social_links = SocialLinksSerializer(required=True, many=True)

def validate(self, attrs):
    print(attrs)
    unknown = set(self.initial_data) - set(self.fields)
    if unknown:
        raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs
class SocialLinksSerializer(serializers.Serializer):
    type = serializers.CharField(required=True)
    url = serializers.URLField(required=True)

def validate(self, attrs):
    social_links_data = self.parent.parent.initial_data['social_links']
    for link in social_links_data:
        unknown = set(link) - set(self.fields)
        if unknown:
            raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs
这是我的公司ProfileMetaSerializer:-

class CompanyProfileSerializer(serializers.ModelSerializer):
    logo = ImageLinkSerializer(read_only=True)
    company_locations = CompanyLocationSerializer(many=True, read_only=True)
    meta = CompanyProfileMetaSerializer(required=False)

    def update(self, instance, validated_data):
        meta = validated_data.get('meta')
        established_data = meta['established']
        if established_data:
            instance.meta['established'] = instance.meta['established']
            instance.meta['social_links'] = meta['social_links']
        instance.description = validated_data.get('description', instance.description)
        instance.save()
        return instance

    class Meta:
        model = Company
        fields = ['name', 'logo', 'company_locations', 'kind', 'strength', 'description', 'meta']
        read_only_fields = ['name', 'kind', 'strength']
class CompanyProfileMetaSerializer(serializers.Serializer):
    established = serializers.DateField(read_only=True)
    social_links = SocialLinksSerializer(required=True, many=True)

def validate(self, attrs):
    print(attrs)
    unknown = set(self.initial_data) - set(self.fields)
    if unknown:
        raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs
class SocialLinksSerializer(serializers.Serializer):
    type = serializers.CharField(required=True)
    url = serializers.URLField(required=True)

def validate(self, attrs):
    social_links_data = self.parent.parent.initial_data['social_links']
    for link in social_links_data:
        unknown = set(link) - set(self.fields)
        if unknown:
            raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs
这是我的社交链接浏览器:-

class CompanyProfileSerializer(serializers.ModelSerializer):
    logo = ImageLinkSerializer(read_only=True)
    company_locations = CompanyLocationSerializer(many=True, read_only=True)
    meta = CompanyProfileMetaSerializer(required=False)

    def update(self, instance, validated_data):
        meta = validated_data.get('meta')
        established_data = meta['established']
        if established_data:
            instance.meta['established'] = instance.meta['established']
            instance.meta['social_links'] = meta['social_links']
        instance.description = validated_data.get('description', instance.description)
        instance.save()
        return instance

    class Meta:
        model = Company
        fields = ['name', 'logo', 'company_locations', 'kind', 'strength', 'description', 'meta']
        read_only_fields = ['name', 'kind', 'strength']
class CompanyProfileMetaSerializer(serializers.Serializer):
    established = serializers.DateField(read_only=True)
    social_links = SocialLinksSerializer(required=True, many=True)

def validate(self, attrs):
    print(attrs)
    unknown = set(self.initial_data) - set(self.fields)
    if unknown:
        raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs
class SocialLinksSerializer(serializers.Serializer):
    type = serializers.CharField(required=True)
    url = serializers.URLField(required=True)

def validate(self, attrs):
    social_links_data = self.parent.parent.initial_data['social_links']
    for link in social_links_data:
        unknown = set(link) - set(self.fields)
        if unknown:
            raise ValidationError(f'Unknown fields: {", ".join(unknown)}')
    return attrs

通常,当我们在嵌套的
序列化程序上执行CRUD操作时,最好从
验证的\u数据中弹出数据的嵌套部分。