问题是当我在DRF
上使用ListSerializer
和pagination
一起使用时,我得到了异常。在
我有以下代码
serializers.py
class IsDeletedFilteredListSerializer(serializers.ListSerializer):
def to_representation(self, data):
data = data.filter(is_deleted=False)
return super(IsDeletedFilteredListSerializer, self).to_representation(data)
class GallerySerializer(serializers.ModelSerializer):
class Meta:
model = Gallery
list_serializer_class = IsDeletedFilteredListSerializer
class ProductSerializer(serializers.ModelSerializer):
galleries = GallerySerializer(many=True, read_only=True)
class Meta:
model = Product
list_serializer_class = IsDeletedFilteredListSerializer
^{pr2}$views.py
当我尝试购买产品时:
'list' object has no attribute 'filter'
但是当我把paginate_by = 20
去掉,一切都正常。
似乎分页发生在ListFilter之前,并将queryset转换为list。在
因为我使用Django Admin interface
,所以更改ObjectManager是不合适的,而且我使用nested serializers
重写视图上的queryset也不起作用(过滤器产品和嵌套的库不会过滤)。在
I'm using Django 1.8.6 with DRF 3.1.3 on Python 3.4
您可以通过在}。在
get_queryset
中过滤您的Products
并使用IsDeletedFilteredListSerializer
来只过滤你的{你可以这样做:
并在您的
^{pr2}$ProductSerializer
中删除序列化程序元类中的list_serializer_class
选项。在这样您就可以同时过滤}
products
和{相关问题 更多 >
编程相关推荐