/ / Как да получите старите стойности на django модел поле, докато актуализиране без използване на сигнали в django почивка рамка? - python, django, django-models, django-rest-framework

Как да получите старите стойности на полето на модела django, докато актуализирате без да използвате сигнали в рамката за почивка django? - питън, джанго, джанго-модели, джанго-почивка-рамка

Използвам 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.

Отговори:

2 за отговор № 1

Сериализаторът има атрибут на екземпляр, който не се актуализира, докато не извикате save. Така:

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