根据对Wagtail REST API的请求接收别名字段

时间:2019-02-18 18:14:40

标签: python django django-rest-framework wagtail

假设我有一个包含以下字段的模型:

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都被翻译成某种语言的字段。 (他们的电话号码是事先知道的,因为它们将来不太可能更改)

当我使用Wagtail的REST API时,响应会包括所有字段,并且我必须开始手动排除字段:

{
  <other fields>: ...
  "field_en": ...
  "field_de": ...
  "field_zh": ...
}

因此,可以通过排除不想要的字段来解决此问题,但是理想情况下,我希望使用?lang=en参数来请求它们,并获得更简洁的答复,例如:

{
  <other fields>: ...
  "field": ... // This is actually field_en!
}

这样我的前端或任何其他客户端不必实现field_<lang>逻辑。

作为旁注-页面中的内置字段title也可能会被翻译,这意味着将有titletitle_detitle_zh,这可能需要一些额外的逻辑。

我在BaseEndpoint中进行了挖掘,并且能够创建一个类以在子类化时生成_lang特定的终结点,但是它将返回field_<lang>而不是field以及有点丑陋(必须每种语言对它进行子类化并分别注册一次,好吧)

感谢任何帮助或指针:)

0 个答案:

没有答案