def value_from_datadict(self, data, files, name):
        data_keys = data.keys()
        self.widgets = []
        html_indexes = []
        prefix = 'st' if self.flags is not None and 'FORCE_SCHEMA' in self.flags else ''
        for data_key in data_keys:
            match = re.match(name + '_(\d+)_%spair_0' % prefix, data_key)
            if match is not None:
                self.widgets.append(self.pair(sub_attrs=self.sub_attrs, attrs=self.attrs))
                html_indexes.append(match.group(1))
            else:
                match = re.match(name + '_(\d+)_%ssubdict_0' % prefix, data_key)
                if match is not None:
                        self.widgets.append(
                            self.subdict(sub_attrs=self.sub_attrs,
                                         no_schema=0,
                                         max_depth=self.max_depth,
                                         flags=self.flags,
                                         attrs=self.attrs)
                        )
                        html_indexes.append(match.group(1))

        return [widget.value_from_datadict(
                    data, files,
                    '%s_%s_%s' % (name, html_indexes[i], widget.suffix))
                    for i, widget in enumerate(self.widgets)]
Process is:
dataset/ETHPy150Open MongoEngine/django-mongoengine/django_mongoengine/forms/widgets.py/Dictionary.value_from_datadict