通过使用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()
是否以及如何在模型序列化程序的上下文中工作