Add ability to easily use Form Page fields in API

Improve documentation. Adding information about how to retrieve form fields from the API.
Include the API fields on the form field model
pull/9517/head
Sævar Öfjörð Magnússon 2022-06-16 15:35:48 +02:00 zatwierdzone przez LB (Ben Johnston)
rodzic b91ed2cce4
commit 629b8e7a55
2 zmienionych plików z 27 dodań i 0 usunięć

Wyświetl plik

@ -137,6 +137,22 @@ This will make `published_date`, `body`, `feed_image` and a list of
fields, you must select the `blog.BlogPage` type using the `?type`
[parameter in the API itself](apiv2_custom_page_fields).
(form_page_fields_api_field)=
### Adding form fields to the API
If you have a FormBuilder page called `FormPage` this is an example of how you would expose the form fields to the API:
```python
from wagtail.api import APIField
class FormPage(AbstractEmailForm):
#...
api_fields = [
APIField('form_fields'),
]
```
### Custom serializers
[Serializers](https://www.django-rest-framework.org/api-guide/fields/) are used to convert the database representation of a model into

Wyświetl plik

@ -11,6 +11,7 @@ from django.utils.translation import gettext_lazy as _
from wagtail.admin.mail import send_mail
from wagtail.admin.panels import FieldPanel
from wagtail.api import APIField
from wagtail.contrib.forms.utils import get_field_clean_name
from wagtail.models import Orderable, Page
@ -121,6 +122,16 @@ class AbstractFormField(Orderable):
FieldPanel("default_value", classname="formbuilder-default"),
]
api_fields = [
APIField("clean_name"),
APIField("label"),
APIField("field_type"),
APIField("help_text"),
APIField("required"),
APIField("choices"),
APIField("default_value"),
]
def get_field_clean_name(self):
"""
Prepare an ascii safe lower_snake_case variant of the field name to use as the field key.