0

我用 django 构建了一个 api,并且我有一个包含图像字段的图片模型。我正在尝试执行部分更新

我已经尝试设置partial = True为序列化程序的定义

序列化器是

class PictureSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Picture
        fields = ("id", "name", "picture", "button_1", "button_2", "button_3", "button_4")
        partial = True

模型是

class Picture(models.Model):
    name = models.CharField(max_length=250)
    picture = models.ImageField(upload_to="pictures/", null=True, blank=True)
    button_1 = models.BooleanField(default=False)
    button_2 = models.BooleanField(default=False)
    button_3 = models.BooleanField(default=False)
    button_4 = models.BooleanField(default=False)
    printed = models.IntegerField(default=0)

观点是

class PictureViewSet(viewsets.ModelViewSet):
    queryset = Picture.objects.all()
    serializer_class = PictureSerializer

4

1 回答 1

2

暴露你ViewSeturls.py

router = routers.DefaultRouter()
router.register(r'pictures', PictureViewSet, base_name='picture')

urlpatterns = [
    url(r'', include(router.urls)),
]

PATCH将包含要更新的 JSON 数据的请求发送到公开的端点。请注意,PATCH 请求会转到您要更新的实例的实例端点,因此您的 URL 将如下所示.../pictures/<picture_id>

{
  "name": "updated_name"
}

你不需要这个partial = True部分。

此外,当您的序列化程序中排除的字段远少于包含的字段时,您可以执行以下操作:

class Meta:
    model = Picture
    exclude = ("printed", )

于 2019-10-10T13:53:31.750 回答