Django rest framework Django Rest框架-筛选嵌套序列化程序

Django rest framework Django Rest框架-筛选嵌套序列化程序,django-rest-framework,Django Rest Framework,一本书可以有许多不同语言的书籍内容。在我的例子中,这本书有两个图书目录,一个是英文的,另一个是中文的 我通过如下指定语言查询集来获取特定语言的书籍及其内容:。当调用这个函数时,它会在views.py中调用BookList get_query,我在其中按语言过滤内容。但是,json结果仍然打印该书的所有BookContent 下面是我的代码 models.py class Book(models.Model): id = models.UUIDField(primary_key=True,

一本书可以有许多不同语言的书籍内容。在我的例子中,这本书有两个图书目录,一个是英文的,另一个是中文的

我通过如下指定语言查询集来获取特定语言的书籍及其内容:。当调用这个函数时,它会在views.py中调用BookList get_query,我在其中按语言过滤内容。但是,json结果仍然打印该书的所有BookContent

下面是我的代码

models.py

class Book(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=255)

class BookContent(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    book = models.ForeignKey(Book, releated_name='content' on_delete=models.CASCADE)
    content = models.TextField()
    language = models.TextField()
序列化程序.py

class BookContentSerializer(serializers.ModelSerializer):
    class Meta:
        model = BookContent
        fields = ('id', 'content', 'language')

class BookSerializer(serializers.ModelSerializer):
    content = BookContentSerializer(many=True, read_only=True)

    class Meta:
        model = Book
        fields = ('id', 'title', 'content')
views.py

class BookList(generics.ListAPIView):
    serializer_class = BookSerializer
    permission_classes = (permissions.IsAuthenticated,)

    def get_queryset(self):
        if 'language' in self.request.query_params:
            language = self.request.query_params['language']
        return Book.objects.filter(content__language=language).distinct().order_by('title')

class BookDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    permission_classes = (permissions.IsAuthenticated,)
当前Json结果:

{
    "results": [
        {
            "id": "d3e5185a-1b7b-427c-bbe3-030bfa2e3bce",
            "title": "My Book Title",            
            "book_content": [
                {
                    "id": "0fea8027-3ecf-4571-a95f-5a09a93408ec",
                    "content": "hello content 1",
                    "language": "english"
                },
                {
                    "id": "0fea8027-3ecf-4571-a95f-5a09a93408ed",
                    "content": "你好",
                    "language": "chinese"
                }
            ]
        }
    ]
}
{
        "results": [
            {
                "id": "d3e5185a-1b7b-427c-bbe3-030bfa2e3bce",
                "title": "My Book Title",            
                "book_content":
                    {
                        "id": "0fea8027-3ecf-4571-a95f-5a09a93408ec",
                        "content": "hello content 1",
                        "language": "english"
                    }

            }
        ]
    }
如何仅获取特定语言的书籍列表和BookContent语言

预期Json结果:

{
    "results": [
        {
            "id": "d3e5185a-1b7b-427c-bbe3-030bfa2e3bce",
            "title": "My Book Title",            
            "book_content": [
                {
                    "id": "0fea8027-3ecf-4571-a95f-5a09a93408ec",
                    "content": "hello content 1",
                    "language": "english"
                },
                {
                    "id": "0fea8027-3ecf-4571-a95f-5a09a93408ed",
                    "content": "你好",
                    "language": "chinese"
                }
            ]
        }
    ]
}
{
        "results": [
            {
                "id": "d3e5185a-1b7b-427c-bbe3-030bfa2e3bce",
                "title": "My Book Title",            
                "book_content":
                    {
                        "id": "0fea8027-3ecf-4571-a95f-5a09a93408ec",
                        "content": "hello content 1",
                        "language": "english"
                    }

            }
        ]
    }

可能重复的查询集在
get\u queryset
中的格式是否正确?