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