Die beste Methode, um eine Django-Modellinstanz nach einem bestimmten Datum zu löschen

8

Ich schreibe eine kleine App, in der der Benutzer ein Ereignis erstellt und das Datum angibt, an dem das Ereignis eintritt. Nachdem das Ereignisdatum abgelaufen ist, möchte ich diese Ereignisinstanz löschen. Mein aktueller Versuch wirft eine Funktion, die überprüft, ob das Ereignis in der Ereignisseitenansicht ablaufen sollte. Ich bin mir nicht sicher, ob die expiration_check-Funktion korrekt überprüft, und ich bin mir nicht sicher, ob das Ereignis nur mit einer Funktion in der Ansicht funktioniert.

Hier ist meine Ansicht und Ablauffunktion:

%Vor%

Ich sammle das Datum vom Benutzer und speichere es in einem DateTime-Feld: date = models.DateField ()

Lassen Sie mich wissen, wenn weitere Details benötigt werden. Jeder Einblick wird geschätzt, danke!

    
darko 03.08.2012, 03:25
quelle

1 Antwort

12

Wenn Sie Ihre Anwendung auf einer UNIX-Plattform hosten (GNU / Linux, OSX, etc. ), ist es wahrscheinlich am besten, cron , das generische Systemprogramm zum Ausführen von Dingen, zu verwenden regelmäßig.

Dies setzt voraus, dass Sie Ihren Ablaufcode als benutzerdefinierten Verwaltungsbefehl implementieren :

  1. Wenn Sie noch keine benutzerdefinierten Verwaltungsbefehle haben, erstellen Sie die folgende Verzeichnisstruktur:

    %Vor%
  2. Erstellen Sie in expire_events.py eine neue Klasse in den folgenden Zeilen:

    %Vor%
  3. Nun sollten Sie ./manage.py expire_events ausführen und alle Ereignisse mit Ablaufdatum in der Vergangenheit löschen können.

Um dies in regelmäßigen Abständen mit cron auszuführen (diese Anweisungen sind für GNU / Linux, können aber auch für andere UNIX-Varianten funktionieren), führen Sie sudo crontab -e aus und fügen Sie die folgende Zeile hinzu:

%Vor%

(Dies würde die Aufgabe alle 5 Minuten ausführen; Informationen zum Festlegen von Joblaufzeiten finden Sie in der Crontab-Dokumentation ) / p>     

supervacuo 03.08.2012 04:08
quelle

Tags und Links