Инициализация разного поля с разным параметром в сериализаторе в зависимости от переданной переменной

Я пытаюсь инициализировать различные поля (объект с различными параметрами), указывая соответствующий параметр, и передать его сериализатору каким-то образом. Вот что я имею в виду:

class ImageSerializer(FlexFieldsModelSerializer):
    image = VersatileImageFieldSerializer(sizes=custom)

    class Meta:
        model = UserImage
        fields = ['pk', 'image']
<
def __init__(self, *args, **kwargs):
    self.image = VersatileImageFieldSerializer(sizes=self.context.get('custom'))
    super(ImageSerializer, self).__init__(*args, **kwargs)
В этом классе я хочу передавать VersatileImageFieldSerializer различные размеры (замените переменную 'custom') из представления. Я знаю, что могу передать контекст и прочитать оттуда значение, и это работает отлично. Есть только одна проблема: я не могу ссылаться на self.context в момент определения переменных. Чтобы решить ее, я попытался переопределить конструктор и создать эту переменную оттуда. Вот как я это сделал:

При таком подходе я получил ошибку 'ImageSerializer' объект не имеет атрибута 'parent' и я не смог найти решение для этого, поэтому я попытался реализовать SerializerMethodField и вернуть этот тип объекта следующим образом:

image = serializers.SerializerMethodField()

def get_image(self, obj):
    return VersatileImageFieldSerializer(sizes=self.context.get('custom'))

но VersatileImageFieldSerializer не является сериализуемым. У меня закончились идеи и решения, а также постепенно заканчивается время. Есть ли какой-нибудь способ достичь моей цели?

Вернуться на верх