SignalerLink to this heading

En lista över alla signaler som Django skickar. Alla inbyggda signaler skickas med hjälp av send()-metoden.

ModellsignalerLink to this heading

Modulen django.db.models.signals definierar en uppsättning signaler som skickas av modellsystemet.

pre_initLink to this heading

django.db.models.signals.pre_initLink to this definition

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:

avsändare

Den modellklass som just fått en instans skapad.

args

En lista med positionella argument som skickas till __init__().

kwargs

En ordlista med nyckelordsargument som skickas till __init__().

Till exempel: har tutorial den här raden:

Code
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

Fråga (själva klassen)

args

[] (en tom lista eftersom det inte fanns några positionella argument som skickades till __init__()))

kwargs

{'question_text': "What's new?", 'pub_date': datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=datetime.UTC)}

post_initLink to this heading

django.db.models.signals.post_initLink to this definition

Som pre_init, men den här skickas när metoden __init__() är klar.

Argument som skickas med denna signal:

avsändare

Som ovan: modellklassen som just har fått en instans skapad.

instans

Den faktiska instansen av den modell som just har skapats.

pre_saveLink to this heading

django.db.models.signals.pre_saveLink to this definition

Detta skickas i början av en modells save()-metod.

Argument som skickas med denna signal:

avsändare

Modellklassen.

instans

Den faktiska instans som sparas.

raw

En 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änder

Det databasalias som används.

uppdatera_fält

Den uppsättning fält som ska uppdateras enligt Model.save(), eller None om update_fields inte skickades till save().

post_saveLink to this heading

django.db.models.signals.post_saveLink to this definition

Som pre_save, men skickas i slutet av metoden save().

Argument som skickas med denna signal:

avsändare

Modellklassen.

instans

Den faktiska instans som sparas.

skapad

En boolean; True om en ny post skapades.

raw

En 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änder

Det databasalias som används.

uppdatera_fält

Den uppsättning fält som ska uppdateras enligt Model.save(), eller None om update_fields inte skickades till save().

pre_deleteLink to this heading

django.db.models.signals.pre_deleteLink to this definition

Skickas i början av en models delete()-metod och en querysets delete()-metod.

Argument som skickas med denna signal:

avsändare

Modellklassen.

instans

Den faktiska instans som raderas.

använder

Det databasalias som används.

ursprung

Den instans av Model eller QuerySet från vilken borttagningen skedde, dvs. den instans vars metod delete() anropades.

post_deleteLink to this heading

django.db.models.signals.post_deleteLink to this definition

Som pre_delete, men skickas i slutet av en models delete()-metod och en querysets delete()-metod.

Argument som skickas med denna signal:

avsändare

Modellklassen.

instans

Den 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änder

Det databasalias som används.

ursprung

Den instans av Model eller QuerySet från vilken borttagningen skedde, dvs. den instans vars metod delete() anropades.

m2m_changedLink to this heading

django.db.models.signals.m2m_changedLink to this definition

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:

avsändare

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.

instans

Den instans vars many-to-many-relation uppdateras. Detta kan vara en instans av sender, eller av den klass som ManyToManyField är relaterad till.

handling

En 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änd

Anger vilken sida av relationen som uppdateras (dvs. om det är den framåtriktade eller omvända relationen som ändras).

modell

Klassen för de objekt som läggs till i, tas bort från eller rensas från relationen.

pk_set

Fö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änder

Det databasalias som används.

raw

En 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.

Till exempel:, om en Pizza kan ha flera Topping-objekt, modellerade så här:

Code
class Topping(models.Model):
    # ...
    pass


class Pizza(models.Model):
    # ...
    toppings = models.ManyToManyField(Topping)

Om vi ansluter en hanterare så här:

Code
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:

Python console
>>> 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

Pizza.toppings.through (den mellanliggande m2m-klassen)

instans

p (instansen Pizza som modifieras)

handling

"pre_add" (följt av en separat signal med "post_add")

omvänd

False (Pizza innehåller ManyToManyField, så detta anrop ändrar den framåtriktade relationen)

modell

Topping (klassen för de objekt som läggs till Pizza)

pk_set

{t.id} (eftersom endast Topping t lades till i relationen)

använder

"default" (eftersom standardroutern skickar skrivningar hit)

raw

False (since it is not loaded from a fixture)

Och om vi då skulle göra något sådant här:

Python console
>>> t.pizza_set.remove(p)

de argument som skickas till en m2m_changed hanterare skulle vara:

Argument

Värde

avsändare

Pizza.toppings.through (den mellanliggande m2m-klassen)

instans

t (instansen Topping som modifieras)

handling

"pre_remove" (följt av en separat signal med "post_remove")

omvänd

True (Pizza innehåller ManyToManyField, så detta anrop modifierar den omvända relationen)

modell

Pizza (klassen för de objekt som tagits bort från Topping)

pk_set

{p.id} (eftersom endast Pizza p togs bort från relationen)

använder

"default" (eftersom standardroutern skickar skrivningar hit)

raw

False (since it is not loaded from a fixture)

klass_förbereddLink to this heading

django.db.models.signals.class_preparedLink to this definition

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:

avsändare

Modellklassen som just var förberedd.

Ledningens signalerLink to this heading

Signaler skickade av django-admin.

pre_migrateLink to this heading

django.db.models.signals.pre_migrateLink to this definition

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:

avsändare

En AppConfig-instans för den applikation som ska migreras/synkroniseras.

app_config

Samma som avsändare.

verbosity

Anger 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.

interaktiv

Om 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.

stdout

Ett strömliknande objekt som kan användas för att omdirigera verbose-utdata.

använder

Aliaset för den databas som ett kommando ska användas på.

plan

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

apps

En 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_migreraLink to this heading

django.db.models.signals.post_migrateLink to this definition

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:

avsändare

En AppConfig-instans för den applikation som just installerades.

app_config

Samma som avsändare.

verbosity

Anger 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.

interaktiv

Om 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.

stdout

Ett strömliknande objekt som kan användas för att omdirigera verbose-utdata.

använder

Det databasalias som används för synkronisering. Standard är databasen default.

plan

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

apps

En 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:

Code
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)

Signaler för begäran/svarLink to this heading

Signaler som skickas av kärnramverket när en begäran behandlas.

begäran_startadLink to this heading

django.core.signals.request_startedLink to this definition

Skickas när Django börjar bearbeta en HTTP-begäran.

Argument som skickas med denna signal:

avsändare

Hanteringsklassen - t.ex. django.core.handlers.wsgi.WsgiHandler - som hanterade begäran.

omgivning

Den ordbok för ”miljö” som tillhandahålls för begäran.

”Begäran_avslutadLink to this heading

django.core.signals.request_finishedLink to this definition

Skickas när Django avslutar leveransen av ett HTTP-svar till klienten.

Argument som skickas med denna signal:

avsändare

Hanterarklassen, som ovan.

har fått undantag från begäranLink to this heading

django.core.signals.got_request_exceptionLink to this definition

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:

avsändare

Oanvänd (alltid None).

begäran

Objektet HttpRequest.

Test av signalerLink to this heading

Signaler skickas endast när kör tester.

inställning_ändradLink to this heading

django.test.signals.setting_changedLink to this definition

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:

avsändare

Inställningshanteraren.

inställning

Namnet på inställningen.

värde

Värdet på inställningen efter ändringen. För inställningar som ursprungligen inte finns, i fasen ”teardown”, är value None.

enter

En boolean; True om inställningen tillämpas, False om den återställs.

template_renderedLink to this heading

django.test.signals.template_renderedLink to this definition

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:

avsändare

Objektet Template som renderades.

mall

Samma som avsändaren

kontext

Den Context med vilken mallen renderades.

Databas-omslagLink to this heading

Signaler som skickas av databasomslaget när en databasanslutning initieras.

anslutning_skapadLink to this heading

django.db.backends.signals.connection_createdLink to this definition

Sent when the database wrapper makes the initial connection to the database. This is particularly useful if you’d like to send any post connection commands to the SQL backend.

Argument som skickas med denna signal:

avsändare

Databasens omslagsklass - t.ex. django.db.backends.postgresql.DatabaseWrapper eller django.db.backends.mysql.DatabaseWrapper, etc.

anslutning

Den databasanslutning som öppnades. Detta kan användas i en konfiguration med flera databaser för att skilja på anslutningssignaler från olika databaser.

Tasks signalsLink to this heading

Signals sent by the tasks framework.

task_enqueuedLink to this heading

django.tasks.signals.task_enqueuedLink to this definition

Sent once a Task has been enqueued.

Argument som skickas med denna signal:

avsändare

The backend class which the Task was enqueued on to.

task_result

The enqueued TaskResult.

task_startedLink to this heading

django.tasks.signals.task_startedLink to this definition

Sent when a Task has started executing.

Argument som skickas med denna signal:

avsändare

The backend class which the Task was enqueued on to.

task_result

The started TaskResult.

task_finishedLink to this heading

django.tasks.signals.task_finishedLink to this definition

Sent once a Task has finished executing, successfully or otherwise.

Argument som skickas med denna signal:

avsändare

The backend class which the Task was enqueued on to.

task_result

The finished TaskResult.