저는 아주 기본적인 CMS/블로그 작업을하고 있습니다. 내 자신의 사용을 위해 그것은 django-adminfiles와 django- markitup에 달려있다. 앱을 배포하고 싶을 수도 있기 때문에 설치된 종속성이 없는지 확인하기 위해 종속성이 충족되어 있는지 확인하고 django의 기본값으로 되돌아가는 방법을 찾아 내려고 노력했습니다.종속성 처리 및 응용 프로그램 유지 관리
나는 아래 코드를 생각해 냈다. 문제는 성가신 느낌이며 스크립트의 머리 부분에 많은 코드를 추가합니다. 종속성을 다루는 다른 (권장되는) 방법이 있는지 궁금합니다. 내 자신의 질문에 대답 한 경우 (코드가 작동하고 있기 때문에) 모든 의견을 환영합니다.
from django.conf import settings as django_settings
# Check installed apps for django-markitup and django-adminfiles
if 'adminfiles' in django_settings.INSTALLED_APPS:
from adminfiles.admin import FilePickerAdmin
adminfiles = True
#inherit from FilePickerAdmin
class ModelAdmin(FilePickerAdmin):
pass
else:
adminfiles = False
#inherit from admin.ModelAdmin if adminfiles =false
class ModelAdmin(admin.ModelAdmin):
pass
#then my own admin class inherits from ModelAdmin above
class HomePageAdmin(ModelAdmin):
exclude = ('slug',)
list_display = ('title', 'status',)
list_filter = ('section',)
if adminfiles:
adminfiles_fields = ('body')
나는 신선한 장고 프로젝트에 응용 프로그램을 사용하거나 설치된 앱에서 adminfiles를 제거하고 여전히 관리자에서 작동 할 수 있습니다.
당신이 당신의'HomePageAdmin' 클래스의 if 문 필요하십니까 :
그런 다음 admin.py에 다음을 추가? 'admin.ModelAdmin'을 직접적으로 하위 클래스로 만들면'adminfiles_fields'는 무시되지 않을까요? – Alasdair지적 해 주셔서 고맙습니다. adminfiles_fields에 대한 if if 문은 필요하지 않습니다. MarkitupWidget에 대해서는 코드를 변경했습니다. 이 모든 것을 켜거나 끌 수있는 좋은 settings.py를 작성할 수 있는지 알게 될 것입니다. – Maarten