我有多个API类ModelViewSet
,它们是从一个公共ViewSet
继承的。
因此,有不同类型的模型,它们有自己的字段,但都共享公共viewset
中定义的相同特性
其中一个特性是过滤。看起来是这样的:
class CommonViewSet(viewsets.ModelViewSet):
filter_backends = (DjangoFilterBackend,)
filter_fields = '__all__'
class FirstViewSet(CommonViewSet):
model = FirstModel
class SecondViewSet(CommonViewSet):
model = SecondModel
# etc...
每个模型都有一组不同的字段,除了每个模型都有一个公共字段user
。我不想让这个领域以任何方式暴露出来
我已从序列化程序中排除此字段:
class CommonSerializer(serializers.ModelSerializer):
class Meta:
exclude = ('user',)
class SecondSerializer(CommonSerializer):
class Meta:
model = FirstModel
# etc...
我想要实现的是也从{
filter_fields = '__all__' # except 'user'
有没有一个标准的方法可以做到这一点
我自己找到了解决办法
为此,我定义了
CustomFilterBackend
,它用filter_exclude
扩展了DjangoFilterBackend
的功能:因此,通过这种过滤器后端,我可以在我的
ModelViewSet
上为排除的字段定义额外的字段:相关问题 更多 >
编程相关推荐