在外键django rest框架中对字段应用排序

在外键django rest框架中对字段应用排序,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我有三种型号: Class Book(models.Model): book_name = models.CharField(max_length=10) author = models.Foreignkey('author', on_delete=models.cascade) Class Author(models.Model): name = models.CharField(max_length=50) addr = models.CharField(max_length=50) C

我有三种型号:

Class Book(models.Model):
book_name = models.CharField(max_length=10)
author = models.Foreignkey('author', on_delete=models.cascade)

Class Author(models.Model):
name = models.CharField(max_length=50)
addr = models.CharField(max_length=50)

Class Bookinfo(models.Model):
book = models.ForeignKey('book', on_delete=models.cascade)
page_number = models.IntegerField()
序列化程序包括:

Class bookserializer(modelserializer):
Class Meta:
    Model= book
    Fields = ("__all__")

Class authorserializer(modelserializer):
Class Meta:
    Model= author
    Fields = ("__all__")

Class bookinfoserializer(modelserializer):
Class Meta:
    Model= bookinfo
    Fields = ("__all__")
    Depth=2
视图集:

Class Bookinfoviewset(viewsets.modelviewset):
Queryset= bookinfo.objects.all()
Serializer_class= bookinfoserializer
在响应中,我得到嵌套值:

{
    Book_id:{
        Book_name:
        Author_id: {
            Name:
            Addr:
        }
    },
    Page_number:
}
在后端,我使用PageNumberPagination、searchfilter和ordering

在book info视图中,我想对book_id内的book_名称应用排序,book_id是一个外键

如何做到这一点而不影响过滤和分页

有没有办法直接在主响应中获取外键中的字段,如:

{   
    Book_name:

    Name:
    Addr:
    Page_number
}

我正在使用python 3.5 django 2.2.9。

Bookinfoviewset
中添加:

def filter_queryset(self, queryset):
    queryset = super(Bookinfoviewset, self).filter_queryset(queryset)
    return queryset.order_by("book__book_name")
一个更优雅的选择是添加到
Bookinfoviewset

ordering_fields = ("book__book_name")
ordering = ("book__book_name")
但不确定这是否有效。让我知道,我会更新答案