0

How can i pass context from 1 serializer to another

like sub_variant = SubVariantSerializer(

source='subvariant_set', many=True, context={"variant_id": ?} # i want to pass variant_id here

)

I know serializer.SerializerMethodField() but dont want to use it here. Please suggest is it possible to send context serializer to serializer in below code? or how can i pass variant_id in further serializer

MY CODE:

# MODELS 
class Variant(models.Model):
    variant_id = models.AutoField(primary_key=True)
    category_id = models.ManyToManyField(Category)
    variant_name = models.CharField(max_length=100)

class SubVariant(models.Model):
    sub_variant_id = models.AutoField(primary_key=True)
    variant_id = models.ManyToManyField(Variant)
    sub_variant_name = models.CharField(max_length=100)


# SERIALZIER
class SubVariantSerializer(serializers.ModelSerializer):
    new_field = serializer.SerializerMethodField()
    
    class Meta:
        model = SubVariant
        fields = "__all__"

    def get_new_field(self, obj):
        print(self.context['variant_id'])          # I want to get variant_id here
        return self.context['variant_id']

class VariantServiceSerializer(serializers.ModelSerializer):
        sub_variant = SubVariantSerializer(
                        source='subvariant_set', many=True, 
                        context={
                              "variant_id": ?? variant_id ??
                            })
    class Meta:
        model = Variant
        fields = "__all__"

0 Answers0