def add_field(self, name: str, value: Field): if name in self.fields_map: raise ConfigurationError( "Field {} already present in meta".format(name)) setattr(self._model, name, value) value.model = self._model self.fields_map[name] = value self._fields = None if value.has_db_field: self.fields_db_projection[name] = value.source_field or name self._fields_db_projection_reverse = None if isinstance(value, fields.ManyToManyField): self.m2m_fields.add(name) self._fetch_fields = None elif isinstance(value, fields.BackwardFKRelation): self.backward_fk_fields.add(name) self._fetch_fields = None field_filters = get_filters_for_field(field_name=name, field=value, source_field=value.source_field or name) self._filters.update(field_filters) self.generate_filters()
def add_field(self, name: str, value: Field): if name in self.fields_map: raise ConfigurationError(f"Field {name} already present in meta") value.model = self._model self.fields_map[name] = value if value.has_db_field: self.fields_db_projection[name] = value.source_field or name if isinstance(value, fields.ManyToManyField): self.m2m_fields.add(name) elif isinstance(value, fields.BackwardFKRelation): self.backward_fk_fields.add(name) field_filters = get_filters_for_field( field_name=name, field=value, source_field=value.source_field or name ) self._filters.update(field_filters) self.finalise_fields()