通过使用Django转换为url中指定的语言代码来返回字段

通过使用Django转换为url中指定的语言代码来返回字段,django,django-models,django-rest-framework,django-views,django-serializer,Django,Django Models,Django Rest Framework,Django Views,Django Serializer,我的模型: class Languages(models.Model): code = models.CharField(max_length=2) name = models.CharField(max_length=50) class Translate(models.Model): lang_code = models.ForeignKey(Languages,related_name = 'translate', on_delete=models.CASCADE

我的模型:

class Languages(models.Model):
    code = models.CharField(max_length=2)
    name = models.CharField(max_length=50)
class Translate(models.Model):
    lang_code = models.ForeignKey(Languages,related_name = 'translate',  on_delete=models.CASCADE)
    ncode = models.CharField(max_length=2)
    name = models.CharField(max_length=50)
我的看法是:

class Languages_List(mixins.ListModelMixin):
      queryset = Languages.objects.all()
      serializer_class = LanguagesSerializer

   def get_queryset(self):
       queryset = Languages.objects.all()
       lang = self.request.query_params.get('ncode',None)
       queryset = queryset.filter(translate__ncode=lang)

   return queryset
我的序列化程序:

  class LanguagesSerializer(QueryFieldsMixin,serializers.ModelSerializer):
    class Meta:
        model = Languages
        fields = ('id', 'code','name')
我可以通过使用西班牙语翻译筛选嵌套字段来返回结果。我的url如下所示:

GET /lang/?ncode=sp
现在我的结果是:

当我使用西班牙语过滤时,我的名字(英语)应翻译成西班牙语,如下所示,并返回结果,而不更改数据库。如何使用Django实现这一点

{
  "id": 4,
  "code": "en",
  "name": "Inglés",
}

要仅获取所需的相关记录,可以指定要返回的字段列表:

queryset = Languages.objects.filter(translate__ncode=lang).values(
        'id', 
        'code', 
        'name',
        'translate__ncode',
        'translate__name'
        )
这将为您提供一个具有指定字段名作为键的字典,并且它将只包括查询筛选器中的ncode

不知道
values()
是否以及如何在模型序列化程序的上下文中工作