In einer Bachstelze Projekt habe ich eine NewsSnippet
Snippet, die für Ankündigungen verwendet wird.Bachstelze zu unterscheiden Seite erstellt von Seite aktualisiert
Außerdem (etwas vereinfacht) habe ich ein Seitenmodell CoursePage
, das Beschreibungen der Kurse enthält, die angeboten werden.
Kinder von CoursePage
stammen aus dem Modell Course
. Dieses Modell enthält nur start_date
und end_date
und eine status
(verfügbar oder ausgebucht) und einige mehr, die ich glaube, ist nicht wichtig für diese Frage.
ein neues Course
zu einem CoursePage
Hinzufügen bedeutet, dass es einen neuen Kurs vom Typ CoursePage
bei start_date
. Das Course
Modell ist von AbstractForm
abgeleitet und ermöglicht die Registrierung für den Kurs zum entsprechenden Datum.
Ich möchte automatisch anmelden (dh, erstellen Sie eine NewsSnippet
), wenn eine neue Course
erstellt wird. Wenn jedoch eine Course
gerade aktualisiert wird, möchte ich nicht eine neue NewsSnippet
erstellt werden. Außerdem möchte ich nur die NewsSnippet
erstellt werden, wenn die Course
Seite veröffentlicht wird, nicht als Entwurf gespeichert.
Ich dachte, dies kann entweder in den save
Verfahren einer vom course
Modell über base_class_form = Myform
jedoch verwendete Form geschehen, ich weiß nicht, wie „veröffentlichen“ von dort „als Entwurf speichern“ zu unterscheiden. Ich habe auch überlegt, Signale wie in der Dokumentation zu verwenden, und page_published
sieht vielversprechend aus, aber die Dokumentation sagt: "Dieses Signal wird von einem PageRevision
ausgegeben, wenn eine Revision auf public gesetzt ist." Ich möchte jedoch nicht jede Revision ankündigen, sondern nur die erste Kreation. Gibt es eine Möglichkeit herauszufinden, ob page_published
zum ersten Mal für eine Page
ausgelöst wird?
Außerdem (das könnte eine zweite Frage sein), gibt es ein gutes und leicht zu verstehendes Beispiel, wie man Signale mit der ready()
Methode Ihrer App implementiert?
Dieser Hook wird auch aufgerufen, wenn eine Seite als Revision gespeichert wird. Ich könnte mit einer Flagge im Page-Modell herumspielen und 'has_unpublished_changes'. Entweder in dem von Ihnen erwähnten Hook oder im 'page_published' Signal. –