2
我正在研究一个非常基本的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项目或安装的应用程序删除adminfiles,它仍然会在管理工作。
你需要的if语句在'HomePageAdmin'类?如果直接将'admin.ModelAdmin'分为子类,那么'adminfiles_fields'不会被忽略吗? – Alasdair 2012-03-04 14:44:20
谢谢你指出。我不需要te如果为adminfiles_fields声明,我为MarkitupWidget做,我改变了我的代码。我会看看我是否可以写一个不错的settings.py来打开或关闭所有这些。 – Maarten 2012-03-04 16:59:44