En lista över alla signaler som Django skickar. Alla inbyggda signaler skickas med hjälp av send()-metoden.
Se även
Se dokumentationen för signal dispatcher för information om hur du registrerar dig för och tar emot signaler.
Ramverket authentication sänder signaler när en användare är inloggad/utloggad.
Modulen django.db.models.signals definierar en uppsättning signaler som skickas av modellsystemet.
Varning
Signaler kan göra din kod svårare att underhålla. Överväg att implementera en hjälpmetod på en custom manager, för att både uppdatera dina modeller och utföra ytterligare logik, eller annars overriding model methods innan du använder modellsignaler.
Varning
Många av dessa signaler skickas av olika modellmetoder som __init__() eller save() som du kan åsidosätta i din egen kod.
Om du åsidosätter dessa metoder i din modell måste du anropa den överordnade klassens metoder för att dessa signaler ska skickas.
Observera också att Django lagrar signalhanterare som svaga referenser som standard, så om din hanterare är en lokal funktion kan den bli skräpinsamlad. För att förhindra detta, skicka weak=False när du anropar signalens connect().
Observera
Modellsignaler avsändare-modeller kan refereras till när man ansluter en mottagare genom att ange dess fullständiga applikationsetikett. Till exempel: kan en Question-modell som definieras i polls-applikationen refereras som 'polls.Question'. Denna typ av referens kan vara ganska praktisk när man hanterar cirkulära importberoenden och utbytbara modeller.
pre_init¶När du instansierar en Django-modell skickas den här signalen i början av modellens metod __init__().
Argument som skickas med denna signal:
Den modellklass som just fått en instans skapad.
argsEn lista med positionella argument som skickas till __init__().
kwargsEn ordlista med nyckelordsargument som skickas till __init__().
Till exempel: har tutorial den här raden:
q = Question(question_text="What's new?", pub_date=timezone.now())
De argument som skickas till en pre_init hanterare skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
post_init¶Som pre_init, men den här skickas när metoden __init__() är klar.
Argument som skickas med denna signal:
Som ovan: modellklassen som just har fått en instans skapad.
instansDen faktiska instansen av den modell som just har skapats.
Observera
instance._state ställs inte in innan signalen post_init skickas, så attributen _state har alltid sina standardvärden. Till exempel: är _state.db None.
Varning
Av prestandaskäl bör du inte utföra frågor i mottagare av signalerna pre_init eller post_init eftersom de skulle utföras för varje instans som returneras under iterationen av queryset.
pre_save¶Detta skickas i början av en modells save()-metod.
Argument som skickas med denna signal:
Modellklassen.
instansDen faktiska instans som sparas.
rawEn boolean; True om modellen sparas exakt som den presenteras (t.ex. vid laddning av en fixture). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.
använderDet databasalias som används.
uppdatera_fältDen uppsättning fält som ska uppdateras enligt Model.save(), eller None om update_fields inte skickades till save().
post_save¶Som pre_save, men skickas i slutet av metoden save().
Argument som skickas med denna signal:
Modellklassen.
instansDen faktiska instans som sparas.
skapadEn boolean; True om en ny post skapades.
rawEn boolean; True om modellen sparas exakt som den presenteras (t.ex. vid laddning av en fixture). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.
använderDet databasalias som används.
uppdatera_fältDen uppsättning fält som ska uppdateras enligt Model.save(), eller None om update_fields inte skickades till save().
pre_delete¶Skickas i början av en models delete()-metod och en querysets delete()-metod.
Argument som skickas med denna signal:
Modellklassen.
instansDen faktiska instans som raderas.
använderDet databasalias som används.
ursprungDen instans av Model eller QuerySet från vilken borttagningen skedde, dvs. den instans vars metod delete() anropades.
post_delete¶Som pre_delete, men skickas i slutet av en models delete()-metod och en querysets delete()-metod.
Argument som skickas med denna signal:
Modellklassen.
instansDen faktiska instans som raderas.
Observera att objektet inte längre kommer att finnas i databasen, så var mycket försiktig med vad du gör med denna instans.
använderDet databasalias som används.
ursprungDen instans av Model eller QuerySet från vilken borttagningen skedde, dvs. den instans vars metod delete() anropades.
m2m_changed¶Skickas när en ManyToManyField ändras på en modellinstans. Strängt taget är detta inte en modellsignal eftersom den skickas av ManyToManyField, men eftersom den kompletterar pre_save/post_save och pre_delete/post_delete när det gäller att spåra ändringar i modeller, inkluderas den här.
Argument som skickas med denna signal:
Den mellanliggande modellklassen som beskriver ManyToManyField. Denna klass skapas automatiskt när ett many-to-many-fält definieras; du kan komma åt den med hjälp av attributet through på many-to-many-fältet.
instansDen instans vars many-to-many-relation uppdateras. Detta kan vara en instans av sender, eller av den klass som ManyToManyField är relaterad till.
handlingEn sträng som anger vilken typ av uppdatering som görs av relationen. Detta kan vara något av följande:
"pre_add"`Skickas innan ett eller flera objekt läggs till i relationen.
"post_add"`Skickas efter att ett eller flera objekt har lagts till i relationen.
"pre_remove"`Skickas innan ett eller flera objekt tas bort från relationen.
"post_remove"`Skickas efter att ett eller flera objekt har tagits bort från relationen.
"pre_clear"`Skickas innan relationen är avklarad.
"post_clear"`Skickas efter att relationen är avklarad.
omvändAnger vilken sida av relationen som uppdateras (dvs. om det är den framåtriktade eller omvända relationen som ändras).
modellKlassen för de objekt som läggs till i, tas bort från eller rensas från relationen.
pk_setFör åtgärderna pre_add och post_add är detta en uppsättning primärnyckelvärden som kommer att läggas till, eller har lagts till, i relationen. Detta kan vara en delmängd av de värden som lämnats in för att läggas till, eftersom inmatningar måste filtrera befintliga värden för att undvika ett IntegrityError i databasen.
För åtgärderna pre_remove och post_remove är detta en uppsättning primärnyckelvärden som skickades in för att tas bort från relationen. Detta är inte beroende av om värdena faktiskt kommer att tas bort eller har tagits bort. I synnerhet kan icke-existerande värden skickas in och visas då i pk_set, även om de inte har någon effekt på databasen.
För åtgärderna pre_clear och post_clear är detta None.
använderDet databasalias som används.
Till exempel:, om en Pizza kan ha flera Topping-objekt, modellerade så här:
class Topping(models.Model):
# ...
pass
class Pizza(models.Model):
# ...
toppings = models.ManyToManyField(Topping)
Om vi ansluter en hanterare så här:
from django.db.models.signals import m2m_changed
def toppings_changed(sender, **kwargs):
# Do something
pass
m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)
och gjorde sedan något liknande:
>>> p = Pizza.objects.create(...)
>>> t = Topping.objects.create(...)
>>> p.toppings.add(t)
de argument som skickas till en m2m_changed hanterare (toppings_changed i exemplet ovan) skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
|
|
|
|
|
|
|
|
Och om vi då skulle göra något sådant här:
>>> t.pizza_set.remove(p)
de argument som skickas till en m2m_changed hanterare skulle vara:
Argument |
Värde |
|---|---|
avsändare |
|
|
|
|
|
|
|
|
|
|
|
|
|
klass_förberedd¶Skickas när en modellklass har ”förberetts”, det vill säga när en modell har definierats och registrerats i Djangos modellsystem. Django använder denna signal internt; den används vanligtvis inte i tredjepartsapplikationer.
Eftersom den här signalen skickas under appregisterpopulationsprocessen och AppConfig.ready() körs efter att appregistret är helt populerat, kan mottagare inte anslutas i den metoden. En möjlighet är att ansluta dem till AppConfig.__init__() istället, och se till att inte importera modeller eller utlösa anrop till appregistret.
Argument som skickas med denna signal:
Modellklassen som just var förberedd.
Signaler skickade av django-admin.
pre_migrate¶Skickas av kommandot migrate innan det börjar installera ett program. Det sänds inte ut för program som saknar en models-modul.
Argument som skickas med denna signal:
En AppConfig-instans för den applikation som ska migreras/synkroniseras.
app_configSamma som avsändare.
verbosityAnger hur mycket information manage.py skriver ut på skärmen. Se flaggan --verbosity för mer information.
Funktioner som lyssnar efter pre_migrate bör justera vad de matar ut på skärmen baserat på värdet av detta argument.
interaktivOm interactive är True är det säkert att uppmana användaren att mata in saker på kommandoraden. Om interactive är False ska funktioner som lyssnar på denna signal inte försöka uppmana till något.
Till exempel: uppmanar django.contrib.auth-appen bara till att skapa en superanvändare när interactive är True.
stdoutEtt strömliknande objekt som kan användas för att omdirigera verbose-utdata.
använderAliaset för den databas som ett kommando ska användas på.
planDen migreringsplan som kommer att användas för migreringskörningen. Planen är inte ett publikt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (True) eller tillämpades (False).
appsEn instans av Apps som innehåller projektets tillstånd före migreringskörningen. Den bör användas i stället för det globala registret apps för att hämta de modeller som du vill utföra åtgärder på.
post_migrera¶Skickas i slutet av kommandona migrate (även om inga migreringar körs) och flush. Det sänds inte ut för program som saknar en models-modul.
Den som hanterar den här signalen får inte ändra databasscheman eftersom det kan leda till att kommandot flush misslyckas om det körs under kommandot migrate.
Argument som skickas med denna signal:
En AppConfig-instans för den applikation som just installerades.
app_configSamma som avsändare.
verbosityAnger hur mycket information manage.py skriver ut på skärmen. Se flaggan --verbosity för mer information.
Funktioner som lyssnar på post_migrate bör justera vad de matar ut på skärmen baserat på värdet av detta argument.
interaktivOm interactive är True är det säkert att uppmana användaren att mata in saker på kommandoraden. Om interactive är False ska funktioner som lyssnar på denna signal inte försöka uppmana till något.
Till exempel: uppmanar django.contrib.auth-appen bara till att skapa en superanvändare när interactive är True.
stdoutEtt strömliknande objekt som kan användas för att omdirigera verbose-utdata.
använderDet databasalias som används för synkronisering. Standard är databasen default.
planDen migreringsplan som användes för migreringskörningen. Planen är inte ett offentligt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (True) eller tillämpades (False).
appsEn instans av Apps som innehåller projektets tillstånd efter migreringskörningen. Den bör användas i stället för det globala registret apps för att hämta de modeller som du vill utföra åtgärder på.
Du kan till exempel registrera en återuppringning i en AppConfig så här:
from django.apps import AppConfig
from django.db.models.signals import post_migrate
def my_callback(sender, **kwargs):
# Your specific logic here
pass
class MyAppConfig(AppConfig):
...
def ready(self):
post_migrate.connect(my_callback, sender=self)
Observera
Om du anger en AppConfig-instans som avsändarargument, se till att signalen är registrerad i ready(). AppConfig återskapas för tester som körs med en modifierad uppsättning av INSTALLED_APPS (t.ex. när inställningar åsidosätts) och sådana signaler bör anslutas för varje ny AppConfig-instans.
Signaler som skickas av kärnramverket när en begäran behandlas.
Varning
Signaler kan göra din kod svårare att underhålla. Överväg använda ett mellanprogram innan du använder request/response-signaler.
begäran_startad¶Skickas när Django börjar bearbeta en HTTP-begäran.
Argument som skickas med denna signal:
Hanteringsklassen - t.ex. django.core.handlers.wsgi.WsgiHandler - som hanterade begäran.
Den ordbok för ”miljö” som tillhandahålls för begäran.
Skickas när Django avslutar leveransen av ett HTTP-svar till klienten.
Argument som skickas med denna signal:
Hanterarklassen, som ovan.
Denna signal skickas när Django stöter på ett undantag under behandlingen av en inkommande HTTP-begäran.
Argument som skickas med denna signal:
Oanvänd (alltid None).
begäranObjektet HttpRequest.
Signaler skickas endast när kör tester.
inställning_ändrad¶Denna signal skickas när värdet på en inställning ändras via kontexthanteraren django.test.TestCase.settings() eller django.test.override_settings() dekorator/kontexthanteraren.
Det skickas faktiskt två gånger: när det nya värdet tillämpas (”setup”) och när det ursprungliga värdet återställs (”teardown”). Använd argumentet enter för att skilja mellan de två.
Du kan också importera den här signalen från django.core.signals för att undvika import från django.test i situationer som inte är test.
Argument som skickas med denna signal:
Inställningshanteraren.
inställningNamnet på inställningen.
värdeVärdet på inställningen efter ändringen. För inställningar som ursprungligen inte finns, i fasen ”teardown”, är value None.
enterEn boolean; True om inställningen tillämpas, False om den återställs.
template_rendered¶Skickas när testsystemet renderar en mall. Denna signal sänds inte ut under normal drift av en Django-server - den är endast tillgänglig under testning.
Argument som skickas med denna signal:
Objektet Template som renderades.
mallSamma som avsändaren
kontextDen :klass:`~django.template.Context` med vilken mallen renderades.
Signaler som skickas av databasomslaget när en databasanslutning initieras.
anslutning_skapad¶Skickas när databasomslaget gör den första anslutningen till databasen. Detta är särskilt användbart om du vill skicka kommandon efter anslutningen till SQL-backend.
Argument som skickas med denna signal:
Databasens omslagsklass - t.ex. django.db.backends.postgresql.DatabaseWrapper eller django.db.backends.mysql.DatabaseWrapper, etc.
anslutningDen databasanslutning som öppnades. Detta kan användas i en konfiguration med flera databaser för att skilja på anslutningssignaler från olika databaser.
aug. 11, 2025