示例#1
0
    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()
示例#2
0
    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()