【发布时间】:2019-06-22 04:28:51
【问题描述】:
我的模特:
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')
我可以通过使用西班牙语翻译过滤我的嵌套字段来返回结果。我的网址看起来像:
GET /lang/?ncode=sp
当我使用西班牙语进行过滤时,我的名字(英语)应该翻译成西班牙语,如下所示,并在不更改数据库的情况下返回结果。如何使用 Django 实现这一点?
{
"id": 4,
"code": "en",
"name": "Inglés",
}
【问题讨论】:
标签: django django-models django-rest-framework django-views django-serializer