就我个人而言,我喜欢使用信号:
from django.db import models
from django.db.models.signals import pre_save
class MyModel(models.Model):
...
def custom_action_before_saving(sender, instance, *args, **kwargs):
...
pre_save.connect(custom_action_before_saving, sender=MyModel)
但我想知道有没有一些时间或任务,更好地在模型类中覆盖保存方法:
from django.db import models
class MyModel(models.Model):
...
def save(self):
...
super(MyModel, self).save()
我问这个问题是因为在Django文档页面中有一个覆盖save()
方法的示例(链接在上面提供),所以我认为这不是一种不好的做法。以
pre_save()
为例,文档表示:
那么,覆盖这会在模型的
save()
方法开始时发送。
save
是否对性能产生与使用信号相同的影响?
if self....:
覆盖保存以避免在某些情况下执行代码不是一回事吗? - Gocht