models.py 1.6 KB

123456789101112131415161718192021222324252627282930313233
  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, toolbars="full",imagePath="", filePath="",upload_settings={},settings={},command=None,event_handler=None ,**kwargs):
  14. self.ueditor_settings=locals().copy()
  15. kwargs["verbose_name"]=verbose_name
  16. del self.ueditor_settings["self"],self.ueditor_settings["kwargs"],self.ueditor_settings["verbose_name"]
  17. super(UEditorField,self).__init__(**kwargs)
  18. def formfield(self,**kwargs):
  19. defaults = {'widget': UEditorWidget(attrs=self.ueditor_settings)}
  20. defaults.update(kwargs)
  21. if defaults['widget'] == admin_widgets.AdminTextareaWidget:
  22. defaults['widget'] = AdminUEditorWidget(attrs=self.ueditor_settings)
  23. return super(UEditorField, self).formfield(**defaults)
  24. #以下支持south
  25. try:
  26. from south.modelsinspector import add_introspection_rules
  27. add_introspection_rules([], ["^DjangoUeditor\.models\.UEditorField"])
  28. except:
  29. pass