Объект модели Django изменился после обновления
У меня есть простая модель следующего вида:
class Invite(models.Model):
status = models.CharField()
....
....
В моем представлении я обновляю сущность Invite:
invite_obj = Invite.objects.get(pk=id) # currently invite.status = "OLD"
print(invite_obj.status) # prints OLD
invite_serializer = CustomSerializer(invite_obj) # a custom serializer which updates the instance status from "OLD" to "NEW"
if invite_serializer.is_valid():
invite_serializer.save()
print("after update", invite_obj.status) # prints NEW
Переменная invite_obj была модифицирована после обновления. Как была изменена переменная, хранящая исходную сущность?
EDIT: код для пользовательского сериализатора
class CustomSerializer(serializers.ModelSerializer):
def update(self, instance, validated_data):
with transaction.atomic():
instance.status = "NEW"
...
instance.save()
return instance
пожалуйста, измените следующий код:
invite_obj = Invite.objects.get(pk=id) # currently invite.status = "OLD"
print(invite_obj.status) # prints OLD
invite_serializer = CustomSerializer(invite_obj) # a custom serializer which updates the instance status from "OLD" to "NEW"
if invite_serializer.is_valid():
invite_serializer.save()
print("after update", invite_obj.status) # prints NEW
to:
invite_obj = Invite.objects.get(pk=id) # currently invite.status = "OLD"
print(invite_obj.status) # prints OLD
invite_serializer = CustomSerializer(instance = invite_obj, data=request.data) # a custom serializer which updates the instance status from "OLD" to "NEW"
if invite_serializer.is_valid():
invite_serializer.save()
print("after update", invite_obj.status) # prints NEW
Я надеюсь, что это сработает для вас наверняка.