update_fields trigger signal example español python django django-signals

python - trigger - Django-señales. Ejemplos simples para comenzar



trigger django (2)

Además de la explicación dada por Prashant, también puede usar el decorador de receptor presente en el módulo django.dispatch .

p.ej

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"

Para más información, consulte este link .

Soy nuevo en Django y no puedo entender cómo trabajar con las señales de Django. ¿Alguien puede explicar " señales de Django " con ejemplos simples?

Gracias por adelantado.


Puede encontrar muy buen contenido sobre las señales de django en Internet haciendo una investigación muy pequeña.

Aquí les explicaré brevemente las señales de Django.
¿Qué son las señales de Django?
Las señales permiten que ciertos remitentes notifiquen a un conjunto de receptores que se ha realizado alguna acción

Acciones:

Se llama el método save () del modelo.
django.db.models.signals.pre_save | post_save

Se llama el método delete () del modelo.
django.db.models.signals.pre_delete | post_delete

Se cambia ManyToManyField en un modelo.
django.db.models.signals.m2m_changed

Django inicia o termina una solicitud HTTP.
django.core.signals.request_started | solicitud_finalizada

Todas las señales son instancias de django.dispatch.Signal.

Ejemplo muy básico:

modelos.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)

Cáscara

In [1]: obj = Customer(name=''foo'', description=''foo in detail'') In [2]: obj.save() Save is called