私はDjangoに不慣れで、Djangoシグナルの操作方法を理解できません。だれでも説明できますか "Djangoシグナル簡単な例を使って?
前もって感謝します。
Django信号はインターネットを介して非常に小さな調査を行うことによって非常に良いコンテンツを見つけることができます。
ここでは、Djangoシグナルについて非常に簡単に説明します。
Djangoシグナルとは?とは
信号により、特定の送信者は、何らかのアクションが発生したことを一連の受信者に通知できます
行動 :
モデルのsave()メソッドが呼び出されます。
Django.db.models.signals.pre_save | post_save
モデルのdelete()メソッドが呼び出されます。
Django.db.models.signals.pre_delete | post_delete
モデルのManyToManyFieldが変更されます。
Django.db.models.signals.m2m_changed
DjangoはHTTPリクエストを開始または終了します。
Django.core.signals.request_started | request_finished
すべてのシグナルはDjango.dispatch.Signalインスタンスです。
models.py
from Django.db import models
from Django.db.models import signals
def create_customer(sender, instance, created, **kwargs):
print "Save is called"
class Customer(models.Model):
name = models.CharField(max_length=16)
description = models.CharField(max_length=32)
signals.post_save.connect(receiver=create_customer, sender=Customer)
シェル
In [1]: obj = Customer(name='foo', description='foo in detail')
In [2]: obj.save()
Save is called
Prashantによる説明とは別に、Django.dispatch
モジュールにあるreceiverデコレータを使用することもできます。
例えば.
from Django.db import models
from Django.db.models import signals
from Django.dispatch import receiver
class Customer(models.Model):
name = models.CharField(max_length=16)
description = models.CharField(max_length=32)
@receiver(signals.pre_save, sender=Customer)
def create_customer(sender, instance, created, **kwargs):
print "customer created"
詳細については、この link を参照してください。