def _create_hstore_virtual_fields(self, cls, hstore_field_name):
        if not self.schema and self.schema_mode is False:
            return
        # add hstore_virtual_fields attribute to class
        if not hasattr(cls, '_hstore_virtual_fields'):
            cls._hstore_virtual_fields = {}
        # loop over all fields defined in schema
        for field in self.schema:
            # initialize the virtual field by specifying the class, the kwargs and the hstore field name
            virtual_field = create_hstore_virtual_field(field['class'],
                                                        field.get('kwargs', {}),
                                                        hstore_field_name)
            # this will call the contribute_to_class method in virtual.HStoreVirtualMixin
            cls.add_to_class(field['name'], virtual_field)
            # add this field to hstore_virtual_fields dict
            cls._hstore_virtual_fields[field['name']] = virtual_field
this methods creates all the virtual fields automatically by reading the schema attribute
dataset/ETHPy150Open djangonauts/django-hstore/django_hstore/fields.py/DictionaryField._create_hstore_virtual_fields