django - 通过 Django Rest Framework View 调用模型方法

标签 django django-models django-rest-framework

我有一个模型:

class Size(models.Model):
    size = models.DecimalField(max_digits=5, decimal_places=1)

    def plus_one(self):
        self.size += 1
        self.save()

为此我有一个简单的序列化程序:

class SizeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Size
        fields = '__all__'

如何使用 DRF 从我的 View 中调用 plus_one 模型方法? 它是如何调用的,什么是好的做法?谢谢!

添加:

class SizeAPIView(generics.UpdateAPIView):
    serializer_class = SizeSerializer
    queryset = Size.objects.filter()

最佳答案

如果我没理解错的话,每次更新对象时都需要调用 plus_one。在这种情况下,您可以像这样覆盖 perform_update() 方法:

class SizeAPIView(generics.UpdateAPIView):
    serializer_class = SizeSerializer
    queryset = Size.objects.filter()

    def perform_update(self, serializer):
        serializer.save()
        serializer.instance.plus_one()

关于django - 通过 Django Rest Framework View 调用模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51002135/

相关文章:

django - 使用 select_related 获取 related_name 对象

python - django rest-framework中身份验证和权限之间的区别

django - 如何在 Django Rest Framework 中过滤逗号分隔的字符串?

Django:使用 ForeignKey 注释对象的计数/总和 - 错误输出

android - 在 django 服务器中获取 Android POST 的数据

python - 在 Django Admin 中保存模型之前显示警告消息

python - 在 Django REST framework 中,默认权限类如何与 per-view(set) 组合?

python - Django ORM基于多对多字段获取对象

python - 如何使用附加过滤的相关对象作为 Django 中的字段来获取结果?

django - 如何使用 (HTMX) 更新两个 HTML 模板元素?