Tutorial Summary

In the last lesson we enabled Wagtails v2 API but we didn't have access to our custom fields.. yet! In this lesson we'll learn how in just 4 lines of code we can make a custom Wagtail Page field show up in our API. And it only gets easier from there.

In the last lesson we enabled the Wagtail v2 API by writing 12 line of code. But our custom fields didn't show up. But to make these custom fields show up as JSON output in the Wagtail v2 API is really easy. In fact, it's just 4 lines of code. And for every extra field you want to expose is just one more line of code. Let's take a look at exposing a custom field in a Wagtail Page.

from django.db import models

from wagtail.core.models import Page
from wagtail.api import APIField


class HomePage(Page):
    """Home page model."""

    banner_image = models.ForeignKey(
        "wagtailimages.Image",
        null=True,
        blank=False,
        on_delete=models.SET_NULL,
        related_name="+",
    )

    api_fields = [
        APIField("banner_image"),
    ]

In the above example, we're using a ForeignKey to a Wagtail Image, and near the bottom we're simply exposing that field to the v2 API. And if you opened this page in your v2 api viewer (ie localhost:8000/api/v2/api/find/?html_path=/) you should see the banner_image with a bunch of extra data, like a download_url, detail_url, and even the image id.

And that's it! If you want to expose more fields, simply add more APIField()'s to your api_fields model property.

Sign up for our newsletter

Get notified about new lessons :)


Our Sites