如何在更新时获取 django 模型字段的旧值而不使用 django rest 框架中的信号?

Asi*_*tar 4 python django django-models django-rest-framework

我正在使用 django-rest-framework。我有一个案例,一旦创建或更新第一个模型的实例,我需要更新其他模型的字段。

这是我的models.py:

class FirstModel(models.Model):
    first_model_item = models.ForeignKey(Item)
    quantity =  models.IntegerField()

class SecondModel(models.Model):
    second_model_item = models.ForeignKey(FirstModel)
    quantity = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

这是我的views.py:

class CreateSecondModelView(generics.CreateAPIView):
    permission_classes = ()
    queryset = SecondModel.objects.all()
    serializer_class = SecondModeSerializer

    def perform_create(self, serializer):
        instance = serializer.save()
        first_model_item = instance.item
        first_model_item.quantity -= instance.quantity
        first_model_item.save()


class UpdateSecondModelView(generics.RetrieveUpdateAPIView):
    permission_classes = ()
    queryset = SecondModel.objects.all()
    serializer_class = SecondModeSerializer

    def perform_update(self, serializer):
        instance = serializer.save()
        #here i want old value of quantity before updating.
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 9

序列化程序有一个实例属性,在调用 save 之前不会更新。所以:

old_quantity = serializer.instance.quantity
instance = serializer.save()
new_quantity = instance.quantity
Run Code Online (Sandbox Code Playgroud)