models.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #coding: utf-8
  2. from django.db import models
  3. from django.contrib.admin import widgets as admin_widgets
  4. from widgets import UEditorWidget,AdminUEditorWidget
  5. from utils import MadeUeditorOptions
  6. class UEditorField(models.TextField):
  7. """
  8. 百度HTML编辑器字段,初始化时,可以提供以下参数
  9. initial:初始内容
  10. plugins:元组
  11. mode:工具按钮的配置数量,
  12. toolbars:提供工具按钮列表,取值为列表,如['bold', 'italic'],取值为:mini,normal,full,代表小,一般,全部
  13. imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹
  14. filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹
  15. imageManagerPath:图片管理器显示的路径,如果不指定则默认=imagepath
  16. options:其他UEditor参数,字典类型
  17. css:编辑器textarea的CSS样式
  18. """
  19. def __init__(self,verbose_name=None,width=600,height=300,plugins=(),toolbars="normal",filePath="",imagePath="",scrawlPath="",imageManagerPath="",css="",options={},**kwargs):
  20. self.ueditor_options=MadeUeditorOptions(width,height,plugins,toolbars,filePath,imagePath,scrawlPath,imageManagerPath,css,options)
  21. kwargs["verbose_name"]=verbose_name
  22. super(UEditorField,self).__init__(**kwargs)
  23. def formfield(self,**kwargs):
  24. defaults = {'widget': UEditorWidget(**self.ueditor_options)}
  25. defaults.update(kwargs)
  26. if defaults['widget'] == admin_widgets.AdminTextareaWidget:
  27. defaults['widget'] = AdminUEditorWidget(**self.ueditor_options)
  28. return super(UEditorField, self).formfield(**defaults)
  29. #以下支持south
  30. try:
  31. from south.modelsinspector import add_ignored_fields,add_introspection_rules
  32. add_introspection_rules([], [r"^.DjangoUeditor\.models\.UEditorField"])
  33. except:
  34. pass