在外键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")
但不确定这是否有效。让我知道,我会更新答案