我正在使用d-r-f在非ORM端点上工作,其中视图集子类化GenericViewSet和自定义序列化程序。一切正常,因为我使用GenericViewSet,我在可浏览API的底部获得了可编辑的表单。但是(例如)在详细视图中,PUT / PATCH表单不会像常规的基于ORM的视图集那样自动填充。有什么东西我需要覆盖并手动完成吗?或者我还缺少什么才能让它发挥作用?
哦,这些不是non_field_errors或其他任何东西 - 所有序列化程序类型都非常基本。只是没有得到任何自动填充。
自请求以来的示例代码 - 一个简单的序列化程序:
class CircuitNodeBaseSerializer(serializers.Serializer):
name = serializers.CharField()
description = serializers.CharField()
pk = serializers.IntegerField()
layer = serializers.IntegerField()
layer_description = serializers.CharField()
非模型视图集覆盖了常用方法:
class CircuitExampleConnectionViewSet(viewsets.GenericViewSet):
queryset = Circuit.objects.all()
serializer_class = CircuitNodeBaseSerializer
def list(self, request):
nodes = list()
for c in self.queryset:
n = get_circuit_node_by_pk(c.id)
nodes.append(n)
serializer = CircuitNodeBaseSerializer(nodes, many=True, context={'request': request})
return Response(serializer.data)
def retrieve(self, request, pk=None):
c = get_circuit_node_by_pk(pk)
serializer = CircuitNodeBaseSerializer(c, context={'request': request})
return Response(serializer.data)
...etc...
一切正常,但我没有在表单中获得任何自动填充 - 无论是html表单还是原始数据/ json块。