Purtroppo questo è vero. Django-ckeditor non fornisce alcuna soluzione integrata per questo problema. Le informazioni sui file caricati non sono memorizzate dove.
Se vuoi tenerli, devi farlo da solo!
Creare l'appropriato modello di dati con l'override eliminare metodo (o utilizzare uno dei ready "campi intelligenti" in grado di gestire la rimozione dei file per voi, Django delete FileField):
from django.db import models
class UploadedFile(models.Model):
uploaded_file = models.FileField(upload_to=u"storage/")
uploaded_at = models.DateField(editable=False, auto_now_add=True)
def __str__(self):
return os.path.basename(self.uploaded_file.path)
def url(self):
return self.uploaded_file.url
def delete(self, *args, **kwargs):
file_storage, file_path = self.uploaded_file.storage, self.uploaded_file.path
super(UploadedFile, self).delete(*args, **kwargs)
file_storage.delete(file_path)
Fornire il proprio attuazione di "caricati" (e facoltativo "browse") vista, che sarà utilizzato per memorizzare le transazioni:
from django.conf import settings
from django.contrib.admin.views.decorators import staff_member_required
from django.views.decorators.cache import never_cache
from django.views.decorators.csrf import csrf_exempt
from ckeditor_uploader.views import upload, browse
from .models import UploadedFile
import re
@staff_member_required
@csrf_exempt
def ckeditor_upload_wrapper(request, *args, **kwargs):
response = upload(request, *args, **kwargs)
if b"Invalid" not in response.content:
try:
matched_regex = re.search("callFunction\(\d, '(.*)'\);", str(response.content))
file_location = matched_regex.group(1).lstrip(settings.MEDIA_URL)
UploadedFile(uploaded_file=file_location).save()
except Exception:
pass
return response
@staff_member_required
@csrf_exempt
@never_cache
def ckeditor_browse_wrapper(request, *args, **kwargs):
return browse(request, *args, **kwargs)
Variazione di default reindirizza in urls.py:
...
from app.views import ckeditor_upload_wrapper, ckeditor_browse_wrapper
urlpatterns = [
url(r'^admin/', admin.site.urls),
#url(r'^ckeditor/', include('ckeditor_uploader.urls')),
url(r'^ckeditor/upload/', ckeditor_upload_wrapper, name='ckeditor_upload'),
url(r'^ckeditor/browse/', ckeditor_browse_wrapper, name='ckeditor_browse'),
...
]
e questo è tutto ... Ora, se si registro vostro nuovo UploadedFile modello, si concede tha possibilità di navigare, cercare e rimuovere qualsiasi immagine caricata direttamente dal pannello di amministrazione di Django.
(Questa soluzione è stata realizzata per Django 1.10 con estensione django-ckeditor 5.3)