models.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  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. class UEditorField(models.TextField):
  6. """
  7. 百度HTML编辑器字段,初始化时,可以提供以下参数
  8. initial:初始内容
  9. toolbars:提供工具按钮列表,取值为列表,如['bold', 'italic'],取值为:mini,normal,full,代表小,一般,全部
  10. imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹
  11. filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹
  12. """
  13. def __init__(self, verbose_name=None, width=600, height=300,
  14. toolbars="full", imagePath="", filePath="",
  15. upload_settings={}, settings={}, command=None,
  16. event_handler=None, **kwargs):
  17. self.ueditor_settings = locals().copy()
  18. kwargs["verbose_name"] = verbose_name
  19. del self.ueditor_settings["self"], self.ueditor_settings[
  20. "kwargs"], self.ueditor_settings["verbose_name"]
  21. super(UEditorField, self).__init__(**kwargs)
  22. def formfield(self, **kwargs):
  23. defaults = {'widget': UEditorWidget(attrs=self.ueditor_settings)}
  24. defaults.update(kwargs)
  25. if defaults['widget'] == admin_widgets.AdminTextareaWidget:
  26. defaults['widget'] = AdminUEditorWidget(
  27. attrs=self.ueditor_settings)
  28. return super(UEditorField, self).formfield(**defaults)
  29. # 以下支持south
  30. try:
  31. from south.modelsinspector import add_introspection_rules
  32. add_introspection_rules([], ["^DjangoUeditor\.models\.UEditorField"])
  33. except:
  34. pass