Goc*_*cht 6 django django-signals django-models
我个人喜欢使用信号:
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)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一些时间或任务更好地覆盖模型类中的save方法:
from django.db import models
class MyModel(models.Model):
...
def save(self):
...
super(MyModel, self).save()
Run Code Online (Sandbox Code Playgroud)
我问这个是因为save()在Django的Documentation页面中有一个覆盖方法(上面提供的链接)的例子,所以我不认为这是一个不好的做法.
我们pre_save()举个例子,文档说:
这是在模型的save()方法的开头发送的.
这是否意味着覆盖save对使用信号的性能具有相同的影响?
RA1*_*123 10
你不会发现任何性能差异.它们都不是黑客或"错误的"编码方法.这就是你喜欢它的方式.
如果在重写保存方法或从其他地方保存时获得循环导入,则可以使用信号.
我遵循一种模式,如果更改属于同一模型,则覆盖save方法,否则如果它们属于不链接到当前模型的不同模型(通过一对一或一对多),则使用信号.
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |