本文由Scarb发表于金甲虫的博客,转载请注明出处

DRF中为一个模型创建多个Serializer和View

需求

同一个模型在不同地方需要展示不同的字段,一个序列化器无法根据场景修改序列化和反序列化的字段。

解决方法

views.py中指定View名称;在urls.py中修改base_name

1
2
3
4
5
6
7
8
9
10
11
12
# serializers.py
class FooSerializer1(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name='foo1-detail',
)
...

class FooSerializer2(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(
view_name='foo2-detail',
)
...
1
2
3
# urls.py
router.register(r'foos', views.EventViewSet,'foo1')
router.register(r'foo2s', views.Event2ViewSet, 'foo2')

参考资料