我计划为门户添加一些功能。
这个想法是,当创建一个模型的实体时,保存时会自动创建另一个模型的实体。
目前,这是通过自定义方法实现的create()
,该方法在创建模型时检查模型中是否存在必要的实体,验证并为另一个模型创建实体。一切都很混乱,并且不提供维护此类代码的灵活性。
我找到了这个参考:信号。
快速检查一下码头就可以清楚地知道这就是您所需要的。
伪代码来理解流程
class ModelA(models.Model):
field1 = ...
field2 = ...
field3 = ...
class ModelB(models.Model):
field1 = ...
field2 = ...
field3 = ...
from django.dispatch import receiver
from django.db.models.signals import post_save
@receiver(post_save, sender=ModelA)
def create_model_b(sender, instance, created, **kwargs):
if created:
# здесь логика для создания ModelB
问题:如何在项目中注册信号?信号是应用程序的一部分并且必须通过配置文件注册吗?
将信号代码放置在特定应用程序根目录下的 signal.py 文件中。在 apps.py 中你这样写:
链接到ready()的文档