Я использую OrderingFilter
глобально через settings.py
, и это прекрасно работает.
Теперь я хотел бы заказать размер вложенного списка из ManyToManyField
. Возможно ли это с OrderingFilter
по умолчанию?
Если нет, есть ли способ сделать это с помощью пользовательского фильтра, сохраняя при этом параметр запроса ordering
в URL-адресе (http://example.com/recipes/?ordering=
). Ради консистенции.
О, и ManyToManyField — это сквозная таблица.
Это мои models.py
:
class Recipe(models.Model):
name = models.CharField(max_length=255)
cook_time = models.FloatField()
ingredients = models.ManyToManyField(IngredientTag, through=Ingredient)
My serializers.py
:
class IngredientTagSerializer(serializers.ModelSerializer):
class Meta:
model = IngredientTag
fields = ('id', 'label')
class IngredientSerializer(serializers.ModelSerializer):
class Meta:
model = Ingredient
fields = ('amount', 'unit', 'ingredient_tag')
depth = 1
class RecipeSerializer(serializers.ModelSerializer):
ingredients = IngredientSerializer(source='ingredient_set', many=True)
class Meta:
model = Recipe
fields = ('id', 'url', 'name', 'ingredients', 'cook_time')
read_only_fields = ('owner',)
depth = 2
И мой views.py
:
class RecipeViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows recipes to be viewed or edited.
"""
queryset = Recipe.objects.all().order_by()
serializer_class = RecipeSerializer
permission_classes = (DRYPermissions,)
ordering_fields = ('cook_time',) #Need ingredient count somewhere?
Спасибо!