【问题标题】:django rest framework: Dynamic serializer and ViewSetdjango rest 框架:动态序列化器和 ViewSet
【发布时间】:2020-03-20 12:57:41
【问题描述】:
作为免责声明,我是 django 和 django rest 框架的新手。
我有一个模型,其中包含上次修改日期和上次修改用户等元数据列。这些数据应该在 API 中可供查看,但将由后端自动设置,因此创建/更新时不需要。据我了解,我可以创建一个动态序列化程序,如docs 所示。
但是如何在 ViewSet 上使用动态序列化?或者这根本不可能?
【问题讨论】:
标签:
serialization
django-rest-framework
【解决方案1】:
如果您希望上次修改日期和上次修改用户为只读,则无需创建 DynamicSerializer。您需要做的就是在序列化程序上将字段设置为只读。
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = (fields exposed to the API)
read_only_fields = ("last_modified_date", "last_modified_user")
创建序列化器后,必须添加到ViewSet中
class MyModelViewSet(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer