Пример #1
0
    def __init__(self, *args, **kwargs):
        super(AutoManagementFormMixin, self).__init__(*args, **kwargs)

        if self.is_bound:
            if isinstance(self.data, MergeDict):
                data = QueryDict(None, mutable=True)
                for d in self.data.dicts:
                    data._encoding = d._encoding
                    data.update(d)
                self.data = data  # Make data mutable
            elif not getattr(self.data, '_mutable', True):
                self.data = self.data.copy()  # Make data mutable
Пример #2
0
 def get_data(self):
     if '@disable_auto_data' in self._data:
         return self._data
     if not hasattr(self, '_data_'):
         self._data_ = self._data
         if isinstance(self._data, MergeDict):
             data = QueryDict(None, mutable=True)
             for d in self._data.dicts:
                 data._encoding = d._encoding
                 data.update(d)
             self._data = data  # Make data mutable
         elif not getattr(self._data, '_mutable', True):
             self._data_ = self._data.copy()  # Make data mutable
         for name, field in self.fields.items():
             initial_value = None
             prefixed_name = self.add_prefix(name)
             data_value = field.widget.value_from_datadict(self._data_, self.files, prefixed_name)
             if data_value is None:
                 if not field.show_hidden_initial:
                     initial_value = self.initial.get(name, field.initial)
                     if callable(initial_value):
                         initial_value = initial_value()
                 else:
                     initial_prefixed_name = self.add_initial_prefix(name)
                     hidden_widget = field.hidden_widget()
                     try:
                         initial_value = field.to_python(hidden_widget.value_from_datadict(
                             self.data, self.files, initial_prefixed_name))
                     except ValidationError:
                         # Always assume data has changed if validation fails.
                         self._changed_data.append(name)
                         continue
                 if callable(initial_value):
                     initial_value = initial_value()
                 if initial_value is not None:
                     self._data_[prefixed_name] = initial_value
     return self._data_