这是我的 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格式的数据了