Я работаю над очень простым 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')
Я могу использовать приложение в новом проекте django или удалить файлы администрирования из установленных приложений, и оно все равно будет работать в админке.