Django 查询集显示英文翻译

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

这是我的 Django

models.py
:

from django.db import models


class Blog(models.Model):
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.pub_date

class LanguagesCode(models.Model):
    code = models.CharField(max_length=5)

    def __str__(self):
        return self.code

class BlogTranslation(models.Model):
    name = models.CharField(max_length=250)
    content = models.TextField(blank=True, null=True)
    blog_id = models.ForeignKey(Blog, related_name='translations', on_delete=models.CASCADE)
    language_code = models.ForeignKey(LanguagesCode, related_name='languages', on_delete=models.DO_NOTHING)

    class Meta:
        unique_together = ('blog_id', 'language_code')
    
    def __str__(self):
        return self.name

我想显示有英文翻译的博客列表,名称为英文。 我需要如何编写查询来获取这些数据:

[
    {
        "name": "1st Blog name in english",
        "content": "content in english",
        "pub_date": "XXX"
    },
    {
        "name": "2nd Blog name in english",
        "content": "content in english",
        "pub_date": "XXX"
    },
]

我将 Django 4 与 Django Rest Framework 一起使用。

这是我最好的尝试,但没有给我想要的结果:

Blog.objects.filter(translations__id = 2)
python django django-models django-rest-framework django-queryset
1个回答
0
投票

你可以使用

values()
所以:

BlogTranslation.objects.filter(language_code__code='en').values('name', 'content', 'blog_id__pub_date')

然后只需要序列化就可以得到JSON格式的数据了

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