Django json api ordering_fields не работает на включаемых ресурсах
Здравствуйте, я работаю над упорядочиванием_полей на включаемых ресурсах, используя django_json_api. У меня есть 2 модели activities и activity_enrollments (activity - foreign_key). Я упорядочиваю по 2 полям, одно из которых связано с activity.priority, а другое - activity_enrollment.is_targeted. Порядок по полю is_targeted работает нормально, но activity__priority не работает
Я пробовал использовать несколько столбцов в модели activity_enrollment, и мне удалось отсортировать их. Но связанные поля не работают
viewset
from rest_framework_json_api import filters
from rest_framework_json_api import django_filters
from rest_framework.filters import SearchFilter
from rest_framework import status, viewsets
from .models import ActivityEnrollment, Activity
from .serializers import ActivityEnrollmentSerializers
class EnrollmentsViewSet(viewsets.ModelViewSet):
"""
A simple ViewSet for viewing and editing accounts.
"""
queryset = ActivityEnrollment.objects.all()
serializer_class = ActivityEnrollmentSerializers
filter_backends = (filters.QueryParameterValidationFilter, filters.OrderingFilter,
django_filters.DjangoFilterBackend, SearchFilter)
ordering_fields = ("activity__priority","is_targeted",)
сериализаторы
from .models import ActivityEnrollment, Activity
from rest_framework_json_api.serializers import ModelSerializer
class ActivitySerializers(ModelSerializer):
class Meta:
model = Activity
fields = (
'id',
'name',
'priority',
)
class ActivityEnrollmentSerializers(ModelSerializer):
included_serializers = {
"activity": ActivitySerializers
}
class Meta:
model = ActivityEnrollment
fields = (
"id",
"is_targeted",
"completed_at",
"activity"
)
class JSONAPIMeta:
included_serializers = ['activity']
api:
GET /api/activity-enrollment/?include=activity&sort=-activity__priority
ответ
{
"links": {
"first": "http://127.0.0.1:8908/api/activity-enrollment/?include=activity&page%5Bnumber%5D=1&sort=-activity__priority",
"last": "http://127.0.0.1:8908/api/activity-enrollment/?include=activity&page%5Bnumber%5D=1&sort=-activity__priority",
"next": null,
"prev": null
},
"data": [
{
"type": "ActivityEnrollment",
"id": "3",
"attributes": {
"is_targeted": false,
"completed_at": "2025-01-06T17:08:00Z"
},
"relationships": {
"activity": {
"data": {
"type": "Activity",
"id": "3"
}
}
}
},
{
"type": "ActivityEnrollment",
"id": "2",
"attributes": {
"is_targeted": true,
"completed_at": "2025-01-14T17:08:00Z"
},
"relationships": {
"activity": {
"data": {
"type": "Activity",
"id": "62"
}
}
}
},
{
"type": "ActivityEnrollment",
"id": "1",
"attributes": {
"is_targeted": false,
"completed_at": null
},
"relationships": {
"activity": {
"data": {
"type": "Activity",
"id": "1"
}
}
}
}
],
"included": [
{
"type": "Activity",
"id": "1",
"attributes": {
"name": "test1",
"priority": 1
}
},
{
"type": "Activity",
"id": "2",
"attributes": {
"name": "test2",
"priority": 62
}
},
{
"type": "Activity",
"id": "3",
"attributes": {
"name": "test3",
"priority": 3
}
}
],
"meta": {
"pagination": {
"page": 1,
"pages": 1,
"count": 3
}
}
}