由SerializerMethodField排序的Django过滤器

时间:2016-02-02 12:11:38

标签: django django-rest-framework django-filter

我的过滤器如下所示:

class CustomUserFilter(django_filters.FilterSet):
  has_reviews_in_area = HasReviewsInArea(name='area__id')
  has_reviews_in_venue = HasReviewsInVenue(name='venue__id')

  class Meta:
    model = CustomUser
    fields = ['has_reviews_in_area', 'has_reviews_in_venue', 'access_level',]
    order_by = ['id', '-id', 'average_rating']

问题是average_rating是在我的序列化程序中创建的动态字段,如下所示:

average_rating = serializers.SerializerMethodField(source='average_rating')

这就是我收到错误的原因:

FieldError at /app/users/
Cannot resolve keyword u'average_rating' into field. 

无论如何,我可以通过我的序列化器字段告诉django-filter进行过滤吗? 我正在使用djangorestframework 3.2.4和django 1.8.4。 (使用ModelViewsets,ModelSerializers和FilterSets)

此外,我无法在我的模型上将average_rating设为属性,因为它是根据我的过滤器动态计算的(例如查询参数中场地的平均评分)

0 个答案:

没有答案