You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On v4.0.0, inflection is not performed by the AutoPrefetchMixin for included resources, contrary to the JSONRenderer.
Suppose the following data model, serializers and viewsets:
from django.db import models
from rest_framework import viewsets, mixins
from rest_framework_json_api import views, serializers
class Album(models.Model):
title = models.TextField()
class Track(models.Model)
title = models.TextField()
is_part_of = models.ManyToManyField(Album)
class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = Album
fields = ["title"]
class TrackSerializer(serializers.ModelSerializer):
class Meta:
model = Track
fields = ["title", "is_part_of"]
included_serializers = {
"is_part_of": AlbumSerializer,
}
Both GET /tracks?include=is-part-of and GET /tracks?include=isPartOf correctly return the set all of tracks along with their albums' titles embedded within the included section of the response.
However, prefetch of the tracks' related album objects is not performed, as one would expect from views.AutoPrefetchMixin.
My workaround is to perform GET tracks?include=is_part_of, which returns the same thing as the above two queries but also performs prefetching.
My investigation has shown me that the AutoPrefetchMixin does not perform inflection of the result of get_included_resources that it uses to create the argument passed to prefetch_related. The JSONRenderer does the following instead:
included_resources = copy.copy(included_resources)
included_resources = [inflection.underscore(value) for value in included_resources]
The text was updated successfully, but these errors were encountered:
On v4.0.0, inflection is not performed by the AutoPrefetchMixin for included resources, contrary to the JSONRenderer.
Suppose the following data model, serializers and viewsets:
Both
GET /tracks?include=is-part-of
andGET /tracks?include=isPartOf
correctly return the set all of tracks along with their albums' titles embedded within theincluded
section of the response.However, prefetch of the tracks' related album objects is not performed, as one would expect from
views.AutoPrefetchMixin
.My workaround is to perform
GET tracks?include=is_part_of
, which returns the same thing as the above two queries but also performs prefetching.My investigation has shown me that the
AutoPrefetchMixin
does not perform inflection of the result ofget_included_resources
that it uses to create the argument passed toprefetch_related
. The JSONRenderer does the following instead:The text was updated successfully, but these errors were encountered: