【问题标题】:How to get the old values of django model field while updating without using signals in django rest framework?如何在不使用 django rest 框架中的信号进行更新时获取 django 模型字段的旧值?
【发布时间】:2018-07-26 06:30:46
【问题描述】:

我正在使用 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()

这是我的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.

【问题讨论】:

    标签: python django django-models django-rest-framework


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-28
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多