[英]How to create model objects of one model automatically when a model object of another has been added in 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.