Мы создаем безголовую CMS с API трясогузки.Наша основная модель стала очень длинной, чтобы сделать представление более понятным и более легкодоступным для интерфейса. Я пытаюсь сгруппировать различные поля моей PageModel в секции .
Но я неНе удается сериализовать вложенный ImageField.
Это мой PageModel:
class LandingPage(Page):
…
introduction_headline= models.CharField()
introduction_text = RichTextField()
introduction_icon = models.ForeignKey(
'main.CaptionImage',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name = '+',
)
…
Я хотел бы сгруппировать эти поля в один раздел API, например:
{
"id": 3,
"meta": {…},
"introduction_section": {
"introduction_headline": "intro head",
"introduction_text": "<p>intro text</p>",
"introduction_image": {
"id": 1,
"meta": {
"type": "main.CaptionImage",
"detail_url": "http://localhost/api/v2/images/1/",
"download_url": "/media/original_images/1.png"
},
"title": "german_design_image.png",
"caption": "Pretty Image"
},
},…
Мне удалось сделать это по частям, написав собственный вводный раздел - сериализатор:
class LandingPage(Page):
…
api_fields = [
APIField('introduction_section', serializer=IntroductionSectionField(source='*')),
…
]
class IntroductionSectionField(Field):
read_only = True
write_only = False
def to_representation(self, value):
return {
"introduction_headline" : value.introduction_headline,
"introduction_text" : value.introduction_text,
"introduction_image" : ?
}
Но я просто не могу понять , как сериализовать вложенный Image Field
?
Я хочу такое же представление, как и стандартное представление вложенных отношений модели страницы.
Я пробовал использовать get_related_field()
метод PageModel
, пытался вызвать ImageSerializer
и всякие другие вещи.