仅更新 属性 并非所有模型,django
Update only that property not all model, django
@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
我有这个政策逻辑。对于创建的每个策略,我都想增加一个 属性 nnumber(这不是我的情况)。
我想在保单日期为今天时更改该保单的状态。但是当我更改它时,策略计数器正在增加。
谁能帮我只更新状态而不更新其他属性?
提前致谢
您可以限制 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
@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
我有这个政策逻辑。对于创建的每个策略,我都想增加一个 属性 nnumber(这不是我的情况)。
我想在保单日期为今天时更改该保单的状态。但是当我更改它时,策略计数器正在增加。
谁能帮我只更新状态而不更新其他属性?
提前致谢
您可以限制 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