Django Rest Framework 中的模型翻译

问题描述 投票:0回答:1

我正在使用 Django Rest Framework 开发一个 API,我需要一些带有一些字段的模型,这些字段应该支持多种语言的翻译,然后,当然,序列化程序应该必须使用预期的语言检索字段。 我考虑过两种选择:向模型添加额外的字段(一个语言字段)或使用每种语言的所有文本创建另一个模型。 另一方面,我看到有一些库(例如 django-modeltranslation)旨在解决该问题,但是,我想了解一些关于它们的意见。 你怎么认为?你会向我推荐什么?

非常感谢

django django-models django-rest-framework translation django-modeltranslation
1个回答
1
投票

根据文档

与 django-rest-framework 结合使用

创建新的 viewset 时,请确保重写 get_queryset 方法,使用 queryset 作为属性将不起作用,因为在设置任何语言之前,它会被评估一次。

****

因此,根据您的需要,您可以创建一个继承自 drf 的类(例如

ViewSet
),从请求中获取语言代码并替换
get_queryset
方法以按语言进行过滤。

编辑

要实现这一点,您通常会:

使用 URL、查询参数或标头检测请求中的语言。 修改视图集的 get_queryset 方法中的查询集,以根据检测到的语言使用正确的翻译过滤或注释结果。 例如:

from django.utils.translation import get_language
from rest_framework import viewsets

class YourModelViewSet(viewsets.ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer

    def get_queryset(self):
        lang = get_language()
        # Adjust the query based on the language, e.g., filtering or annotating
        return super().get_queryset().filter(language=lang)

© www.soinside.com 2019 - 2024. All rights reserved.