Получение алиасных полей на основе запроса к API REST wagtail - PullRequest
0 голосов
/ 18 февраля 2019

Предположим, у меня есть модель со следующими полями:

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цитировать любую помощь или указатели:)

...