#python #django #web #backend
Вопрос:
@property def policy_escape(self): if self.date - datetime.date.today: self.status = 2 self.save() def save(self, *args, **kwargs): self.counter = counter 1
У меня есть такая логика для политики. Для каждой созданной политики я хочу увеличить номер свойства(это не совсем мой случай).
Я хочу, чтобы дата политики была сегодняшней датой, чтобы изменить статус этой политики. Но когда я изменяю его, счетчик политики увеличивается.
Может ли кто-нибудь помочь мне обновить только статус без обновления других свойств?
Заранее спасибо
Комментарии:
1. Таким образом, вы не хотели бы увеличивать счетчик для этого конкретного обновления статуса?
2. Точно! Я хочу это сделать.
Ответ №1:
Вы могли бы ограничить update_fields
:
@property def policy_escape(self): if self.date - datetime.date.today: self.status = 2 self.save(update_fields=("status",))
Однако конкретный объект Python все равно будет иметь измененный счетчик. Таким образом, вам придется избегать любых других save
вызовов этого объекта.
Вместо этого вы могли бы передать обычай kwarg
:
@property def policy_escape(self): if self.date - datetime.date.today: self.status = 2 self.save(update_counter=False) def save(self, *args, **kwargs, update_counter=True): if update_counter: self.counter = 1 # ... super().save(*args, **kwargs):
Другой способ save
вообще избежать вызова-использовать Queryset.update
вместо этого:
@property def policy_escape(self): if self.date - datetime.date.today: self.__class__.objects.filter(pk=self.pk).update(status=2) # self.status = 2 # if the current object should reflect that change