2014-02-15 106 views
2

我想用tinyMCE作爲我的django應用程序的編輯器,但遇到了一些麻煩。我有一切設置,但似乎沒有辦法指定圖像插入/上傳功能的上傳路徑。我有兩個特定的情況,這成爲一個問題:django-tinymce的動態圖片上傳/瀏覽路徑

  • 用戶提交的內容的文件瀏覽器不應顯示其他用戶上傳的文件。我想通過用戶ID「監禁」他們到一個特定的目錄。
  • 我需要一種方法將上傳的文件與它們相關的對象鏈接起來。這樣,如果對象不再存在,我可以修剪這些文件,並且只能在文件瀏覽器中顯示與該對象相關的圖像。

django-tinymce-filebrowser自動將上傳路徑設置爲mce_filebrowser /%Y /%m /%d。似乎沒有辦法以任何方式更改此路徑。

django-filebrowser可以在settings.py中設置上傳目錄的選項,但是我一直無法找到某人爲特定的modelform實例重寫該路徑的任何記錄。我發現最近的是Django filebrowser, model specific directory parameter for FileBrowserField,但我認爲那裏的解決方案並不適用於我的情況。

是否有人使用另一個filebrowser django-tinymce?你有沒有類似的問題,並找到解決辦法?我會感謝任何正確的方向。

回答

1

我使用了類似的方法,但而不是修改的django-filebrowser代碼我結束了在FileBrowserSite的子類延伸的browse()方法和使修飾有:

from django.core.files.storage import DefaultStorage 
from filebrowser.sites import FileBrowserSite 

class FileBrowserSite(FileBrowserSite): 
    def browse(self, request): 
     self.directory = self.directory + str(request.user) + '/' 
     return super(FileBrowserSite, self).browse(request) 

storage = DefaultStorage() 
site = FileBrowserSite(name='file', storage=storage) 
site.directory = "content/" 

我把這塊代碼在一個名爲filebrowser.py和當時我的urls.py我所做的:

from .filebrowser import site 

urlpatterns = [ 
    url(r'^admin/content/file/', include(site.urls)), 
] 

我覺得比修改源代碼更簡潔的方法,並正在努力像我的項目的魅力。

0

我已經有點黑了。我在grappelli 2.7.2上,和django-filebrowser 3.6.1。

我剛剛添加一行到Django的filebrowser文件:sites.py: 的類FileBrowserSite的方法瀏覽(),行〜273,我說:

self._directory_set(DIRECTORY + str(request.user) + "/") 

儘管已經有一個爲每次使用而創建的目錄是很重要的,但是每次創建用戶時,都可以創建一個post_save信號來創建一個目錄。此解決方案不會將文件與對象相關聯,但我認爲這對您而言可能是一個好的開始,它會隔離不同用戶的文件。

對於我來說,目前這個工作很好,我可以想象這不是最完美的方法,反饋非常受歡迎。