Инициализация разного поля с разным параметром в сериализаторе в зависимости от переданной переменной
Я пытаюсь инициализировать различные поля (объект с различными параметрами), указывая соответствующий параметр, и передать его сериализатору каким-то образом. Вот что я имею в виду:
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 не является сериализуемым. У меня закончились идеи и решения, а также постепенно заканчивается время. Есть ли какой-нибудь способ достичь моей цели?