Estoy escribiendo una pequeña aplicación donde el usuario crea un evento y especifica la fecha en que ocurrirá ese evento. Después de que la fecha del evento haya pasado, quiero eliminar esa instancia de evento. Mi intento actual es lanzar una función que verifica si el evento debe caducar en la vista de la página del evento. No estoy seguro de si la función expiration_check se está comprobando de forma correcta, ni estoy seguro de si funcionará solo una función en la vista.La mejor manera de eliminar una instancia de modelo django después de una fecha determinada
Aquí es mi punto de vista y la función de expirar:
def event_page(request, name):
event = Event.objects.get(name=name)
check_expiration(event)
if request.method == "POST":
form = GuestForm(request.POST)
if form.is_valid():
Guest = form.save(commit=False)
Guest.event = event
Guest.save()
return redirect(event)
else:
form = GuestForm()
return render(request, "event_page.html", {"form": form, "event": event, })
def check_expiration(event):
now = datetime.datetime.now()
if event.date < now: #if the event date has past
event.delete()
colecciono la fecha por parte del usuario y almacenarlo en un DateTime archivado: date = models.DateField()
Avísame si lo hay se necesitan más detalles. Cualquier idea es apreciada, ¡gracias!
¿Su intención es que el evento se elimine inmediatamente después de que haya expirado si alguien visita la página del evento o no? –
Su función 'check_expiration' está bien, pero llamarla a la función' event_page' significa que los eventos caducados se mantendrán hasta después de que un usuario cargue 'event_page' para uno de ellos (imagine el flujo de usuarios, ¡probablemente bastante confuso!). Vea a continuación un enfoque diferente. – supervacuo