【发布时间】:2022-01-16 15:56:26
【问题描述】:
我想序列化 ManyToManyField,但同时,我正在寻找使用 ModelViewSet 更新相同内容的东西。我可以序列化它,但是当我更新它时,我不能。我知道我可以为此制作一个单独的 API,但由于某些要求,我需要坚持一个端点。这是我的代码
class ComponentSerializers(serializers.ModelSerializer):
class Meta:
model = coreModel.Component
fields = '__all__'
class MonitorSerializers(serializers.ModelSerializer):
device = ComponentSerializers(read_only=True, many=True)
class Meta:
model = models.Monitor
fields = '__all__'
read_only_fields = ('id', 'created_at', 'updated_at',)
views.py 是
class MonitorViewSet(viewsets.ModelViewSet):
authentication_classes = (authentication.TokenAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
queryset = models.Monitor.objects.all()
filter_backends = (DjangoFilterBackend,OrderingFilter,SearchFilter)
filter_class = superFilter.MonitorFilters
serializer_class = serializers.MonitorSerializers
【问题讨论】:
-
“我无法更新它”是什么意思?
-
我要更新
devicePATCH 请求 -
read_only=设备属性有True标志
-
当我删除它时,我得到一个错误,因为需要 Dict
-
{ "device": [ { "non_field_errors": [ "Invalid data. Expected a dictionary, but got int." ] }, { "non_field_errors": [ "Invalid data. Expected a dictionary, but got int." ] } ] }
标签: python django django-rest-framework