Суть задачи состоит в том, что есть форма для загрузки файла со статусом загрузки. Необходимо, чтобы после загрузки файла его статус был Pending, а спустя несколько секунд менялся на Success.
models.py
class UploadFile(models.Model):
file = models.FileField()
is_active = models.BooleanField(default='False')
views.py
def home(request):
files = UploadFile.objects.all()
if request.method == 'POST':
upload_file_form = UploadFileForm(request.POST, request.FILES)
if upload_file_form.is_valid():
upload_file_form.save()
return redirect(home)
else:
upload_file_form = UploadFileForm()
return render(request, 'testfileapp/home.html', {
'files': files,
'upload_file_form': upload_file_form,
})
signals.py
from django.dispatch import receiver
from django.db.models.signals import post_save
from .models import UploadFile
from .tasks import set_status_as_inactive
@receiver(post_save, sender=UploadFile)
def notify(sender, instance, created, **kwargs):
if created:
set_status_as_inactive.delay(instance.pk)
tasks.py (при таком коде выдает ошибку, что не может импортировать UploadFile)
from celery import shared_task
from .models import UploadFile
@shared_task
def set_status_as_inactive(pk):
UploadFile.objects.get(pk=pk)