forms.py 1.5 KB

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