我们正在使用wagtail API构建无头CMS。 我们的主要模型变得很长,以使表示形式更清洁,并且前端更易于访问, 我正在尝试将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"
},
},…
我设法通过编写自定义的IntroductionSection-序列化程序来部分完成此操作:
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()
的{{1}}方法,尝试调用PageModel
以及其他各种方法。