繁体   English   中英

如何检测何时添加/删除Django模型的对象?

[英]How can I detect when objects of a Django model are added/deleted?

当添加或删除Foo类型的对象时,我需要进行相同的计算。 如何检测Foo模型的对象的添加/删除? 例如:

from django.db import models

class Foo(models.Model):
    ...
    def save(self):
        #do some processing

    def delete(self):
        #do some processing

我可以避免这两种方法中的代码重复吗?

使用信号,您可以像实施

from django.db import models 
from django.db.models.signals import post_save, post_delete

class Foo(models.Model):
    ...
    ...

def foo_handler(sender, **kwargs):    
    #do some processing 

post_save.connect(foo_handler, sender=Foo)
post_delete.connect(foo_handler, sender=Foo)    

您应该在保存或删除模型之前或之后(以及需要时在其他时候)使用Django的信号来调用特定函数。 在此处查看相关文档: http : //docs.djangoproject.com/en/dev/topics/signals/

如果忽略模型方法,您delete()将不会被调用从查询集删除大量对象时(见这里 )。

您可以使用signal.connect将多个信号连接到同一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM