django-filebrowser는 FileBrowseWidget. 적용된 몇 가지 못생긴 해킹과 함께, 나는 ImageField 및 FileField (더 이상 filebrowser.fields.FileBrowseField
모델에 필요)에 대한 장고 관리자에서 일하게 할 수있었습니다.
저는 이것을 (github의 wardi에서 non-grappelli-dependent django-filebrowser과 함께) 사용하고 있습니다.
# a few changes to filebrowser/fields.py
class FileBrowseWidget(Input):
...
# change the default value of attrs from None to {}
def __init__(self, attrs={}):
... # the rest unchanged
# change the default value of attrs, and the first few lines of render, like so
def render(self, name, value, attrs={}):
if value is None:
value = ""
else:
# set an attribute on value that the filebrowser templates need in
# order to display the thumbnail photo in the admin
for suffix in ['gif', 'GIF', 'jpg', 'JPG', 'png', 'PNG']:
if hasattr(value, 'path') and value.path.endswith("." + suffix):
value.filetype = "Image"
break
... # the rest unchanged
# admin.py
from filebrowser.fields import FileBrowseWidget
class FileBrowseForm(forms.ModelForm):
# Use a CharField, not an ImageField or FileField, since filebrowser
# is handling any file uploading
image = forms.CharField(required=True, widget=FileBrowseWidget())
class SomeModelAdmin(admin.ModelAdmin):
# SomeModel has an ImageField named image
form = FileBrowseForm
... # the rest of the admin definition
이것은 약간 못 생겼지 만 지금은 효과가있는 것처럼 보입니다. 그것은 django-filebrowser에 대한 모델 수준의 종속성을 제거하고 의존성을 관리자에게 푸시합니다.
https://github.com/sehmaschine/django-filebrowser에서 모델에 사용자 정의 필드가 더 이상 필요하지 않은 것 같습니다. –