fields.py 1.9 KB

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