python - Django 查询集显示英文翻译

标签 python django django-models django-rest-framework django-queryset

这是我的 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)

最佳答案

您可以使用values()所以:

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

然后只需序列化即可得到JSON格式的数据。

编辑

要从博客模型查询,请使用 Q()对象如此:

from django.db.models import Q

blogs = Blog.objects.filter(
    translations__language_code__code='en'
).values(
    'translations__name',
    'translations__content',
    'pub_date'
).distinct()

关于python - Django 查询集显示英文翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75561763/

相关文章:

python - 通过严格比较对函数进行向量化,以在 2D 数组中查找局部最小值和最大值

Python 2.7.8 在终端(ubuntu 14.04)中打印语句 “Syntax Error: invalid syntax” 但在 vim 上运行良好,为什么?

python - 找不到文件 setuptools-27.2.0-py3.5.egg

python - Django在模板之外人性化?

python - Django 模型 : store reference to unknown class

python 套接字卡在连接上

python - Django 作为 Tornado 应用程序中的中间件

python - Django 模板如果检查 bool True 时标记在 FastCGI 下不起作用

python - 如何在Django中自动为注册到平台的新用户创建用户配置文件

django - 如何在第二个数据库中保存 ManyToMany 字段