【发布时间】:2017-01-23 04:32:52
【问题描述】:
我通过settings.py 在全球范围内使用OrderingFilter,效果很好。
现在我想从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)
我的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?
谢谢!
【问题讨论】:
标签: django django-rest-framework django-filter