forms.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # coding: utf-8
  2. from django import forms
  3. from widgets import UEditorWidget
  4. from DjangoUeditor.models import UEditorField as ModelUEditorField
  5. class UEditorField(forms.CharField):
  6. def __init__(self, label, width=600, height=300, toolbars="full", imagePath="", filePath="", upload_settings={}, settings={}, command=None, event_handler=None, *args, **kwargs):
  7. uSettings = locals().copy()
  8. del uSettings["self"], uSettings[
  9. "label"], uSettings["args"], uSettings["kwargs"]
  10. kwargs["widget"] = UEditorWidget(attrs=uSettings)
  11. kwargs["label"] = label
  12. super(UEditorField, self).__init__(*args, **kwargs)
  13. def UpdateUploadPath(model_form, model_inst=None):
  14. """ 遍历model字段,如果是UEditorField则需要重新计算路径 """
  15. if model_inst is not None:
  16. try:
  17. for field in model_inst._meta.fields:
  18. if isinstance(field, ModelUEditorField):
  19. model_form.__getitem__(
  20. field.name).field.widget.recalc_path(model_inst)
  21. except:
  22. pass
  23. class UEditorModelForm(forms.ModelForm):
  24. def __init__(self, *args, **kwargs):
  25. super(UEditorModelForm, self).__init__(*args, **kwargs)
  26. try:
  27. if 'instance' in kwargs:
  28. UpdateUploadPath(self, kwargs["instance"])
  29. else:
  30. UpdateUploadPath(self, None)
  31. except Exception:
  32. pass