[Fixed]-Django Rest Framework Ordering Filter, order by nested list length

1👍

Try:

class RecipeSerializer(serializers.ModelSerializer):
    ingredients = IngredientSerializer(source='ingredient_set', many=True)
    ingredients_length = serializers.SerializerMethodField()

    class Meta:
        model = Recipe
        fields = ('id', 'url', 'name', 'ingredients', 'cook_time')
        read_only_fields = ('owner',)
        depth = 2

    def get_ingredients_length(self, obj):
        return obj.ingredients.count()

Then order by ingredients_length

EDIT

In model.py, try this:

@property
    def ingredient_length(self):
        return self.ingredient_set.count()

Leave a comment