Предположим, у меня есть модель со следующими полями:
class SomePage(Page):
other_fields = ...
field_en = models.CharField(max_length=280, blank=False, null=False)
field_de = models.CharField(max_length=280, blank=False, null=False)
field_zh = models.CharField(max_length=280, blank=False, null=False)
Где каждое _lang
- это поле, переведенное на определенный язык.(Их число известно заранее, так как они вряд ли изменятся в будущем)
Когда я использую REST API Wagtail, ответы приходят со всеми полями, и я должен начать исключать поля вручную:
{
<other fields>: ...
"field_en": ...
"field_de": ...
"field_zh": ...
}
Таким образом, это может быть решено путем исключения полей, которые мне не нужны, однако я хотел бы, в идеале, либо запросить их с параметром ?lang=en
, и получить более чистые ответы, такие как:
{
<other fields>: ...
"field": ... // This is actually field_en!
}
Так что мой интерфейс или любой другой клиент не должен реализовывать логику field_<lang>
.
В качестве идентификатора - встроенное поле title
на странице также может получитьпереведенный, что означает, например, будет title
, title_de
и title_zh
, что может потребовать некоторой дополнительной логики.
Я покопался в BaseEndpoint
и смог создать классгенерировать _lang
-конкретные конечные точки при подклассах, но они будут возвращать field_<lang>
, а не field
, а также быть немного уродливыми (придется подклассировать его один раз для каждого языка и регистрировать их отдельно, чёрт)
Appreцитировать любую помощь или указатели:)