Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不使用django rest框架中的信号的情况下,如何在更新时获取django模型字段的旧值?_Python_Django_Django Models_Django Rest Framework - Fatal编程技术网

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

Python 在不使用django rest框架中的信号的情况下,如何在更新时获取django模型字段的旧值?,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我正在使用django rest框架。我有一个案例,在创建或更新第一个模型的实例后,我需要更新其他模型的字段 这是我的模型。py: class FirstModel(models.Model): first_model_item = models.ForeignKey(Item) quantity = models.IntegerField() class SecondModel(models.Model): second_model_item = models.Fo

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

这是我的模型。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()
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.
这是我的视图。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()
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.

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

old_quantity = serializer.instance.quantity
instance = serializer.save()
new_quantity = instance.quantity