简体   繁体   English

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

[英]How to get the old values of django model field while updating without using signals in django rest framework?

I am using django-rest-framework. 我正在使用django-rest-framework。 I have a case in which I need to update the field of other model once instance of first model is created or updated. 我有一种情况,一旦创建或更新了第一个模型的实例,就需要更新其他模型的字段。

here is my models.py: 这是我的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()

Here is my views.py: 这是我的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.

The serializer has an instance attribute, which is not updated until you call save. 序列化程序具有实例属性,该属性在您调用保存之前不会更新。 So: 所以:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM