# coding: utf-8 from django import forms from widgets import UEditorWidget from DjangoUeditor.models import UEditorField as ModelUEditorField class UEditorField(forms.CharField): def __init__(self, label, width=600, height=300, toolbars="full", imagePath="", filePath="", upload_settings={}, settings={}, command=None, event_handler=None, *args, **kwargs): uSettings = locals().copy() del uSettings["self"], uSettings[ "label"], uSettings["args"], uSettings["kwargs"] kwargs["widget"] = UEditorWidget(attrs=uSettings) kwargs["label"] = label super(UEditorField, self).__init__(*args, **kwargs) def UpdateUploadPath(model_form, model_inst=None): """ 遍历model字段,如果是UEditorField则需要重新计算路径 """ if model_inst is not None: try: for field in model_inst._meta.fields: if isinstance(field, ModelUEditorField): model_form.__getitem__( field.name).field.widget.recalc_path(model_inst) except: pass class UEditorModelForm(forms.ModelForm): def __init__(self, *args, **kwargs): super(UEditorModelForm, self).__init__(*args, **kwargs) try: if 'instance' in kwargs: UpdateUploadPath(self, kwargs["instance"]) else: UpdateUploadPath(self, None) except Exception: pass