Class: QgsVectorLayerJoinBuffer

Manages joined fields for a vector layer.

Class Hierarchy

Inheritance diagram of qgis.core.QgsVectorLayerJoinBuffer

Base classes

QObject

QgsFeatureSink

An interface for objects which accept features via addFeature(s) methods.

Abstract Methods

addFeatures

Adds a list of features in joined layers.

Methods

addJoin

Joins another vector layer to this layer

changeAttributeValue

Changes attribute value in joined layers.

changeAttributeValues

Changes attributes' values in joined layers.

clone

Create a copy of the join buffer

containsJoins

Quick way to test if there is any join at all

createJoinCaches

Calls cacheJoinLayer() for all vector joins

deleteFeature

Deletes a feature from joined layers.

deleteFeatures

Deletes a list of features from joined layers.

isAuxiliaryJoin

Returns True if the join information is about auxiliary layer, False otherwise

joinForFieldIndex

Finds the vector join for a layer field index.

joinedFeatureOf

Returns the joined feature corresponding to the feature.

joinedFieldsOffset

Find out what is the first index of the join within fields.

joinsWhereFieldIsId

Returns joins where the field of a target layer is considered as an id.

readXml

Reads joins from project file.

removeJoin

Removes a vector layer join

resolveReferences

Resolves layer IDs of joined layers using given project's available layers

targetedFeatureOf

Returns the targeted feature corresponding to the joined feature.

updateFields

Updates field map with joined attributes

vectorJoins

writeXml

Saves mVectorJoins to xml under the layer node

Static Methods

joinSubsetIndices

Returns a vector of indices for use in join based on field names from the layer

Signals

joinedFieldsChanged

Emitted whenever the list of joined fields changes (e.g. added join or joined layer's fields change).

class qgis.core.QgsVectorLayerJoinBuffer[source]

Bases: QObject, QgsFeatureSink

abstract addFeatures(self, features: Iterable[QgsFeature], flags: QgsFeatureSink.Flags | QgsFeatureSink.Flag = QgsFeatureSink.Flags()) bool[source]

Adds a list of features in joined layers. Features given in parameter are those added in target layer. If a corresponding joined feature yet exists in a joined layer, then this feature is just updated. Note that if a corresponding joined feature has only empty fields, then it’s not created nor added.

Parameters:
Return type:

bool

Returns:

False if an error happened, True otherwise

addJoin(self, joinInfo: QgsVectorLayerJoinInfo) bool[source]

Joins another vector layer to this layer

Parameters:

joinInfo (QgsVectorLayerJoinInfo) – join object containing join layer id, target and source field

Return type:

bool

Returns:

(since 2.6) whether the join was successfully added

changeAttributeValue(self, fid: int, field: int, newValue: Any, oldValue: Any = None) bool[source]

Changes attribute value in joined layers. The feature id given in parameter is the one added in target layer. If the corresponding joined feature does not exist in a joined layer, then it’s automatically created if its fields are not empty.

Parameters:
  • fid (int) – The feature id

  • field (int) – The field to update

  • newValue (Any) – The new value of the attribute

  • oldValue (Any = None) – The old value of the attribute

Return type:

bool

Returns:

False if an error happened, True otherwise

changeAttributeValues(self, fid: int, newValues: Dict[int, Any], oldValues: Dict[int, Any] = {}) bool[source]

Changes attributes’ values in joined layers. The feature id given in parameter is the one added in target layer. If the corresponding joined feature does not exist in a joined layer, then it’s automatically created if its fields are not empty.

Parameters:
  • fid (int) – The feature id

  • newValues (Dict[int, Any]) – The new values for attributes

  • oldValues (Dict[int, Any] = {}) – The old values for attributes

Return type:

bool

Returns:

False if an error happened, True otherwise

clone(self) QgsVectorLayerJoinBuffer | None[source]

Create a copy of the join buffer

Return type:

Optional[QgsVectorLayerJoinBuffer]

containsJoins(self) bool[source]

Quick way to test if there is any join at all

Return type:

bool

createJoinCaches(self)[source]

Calls cacheJoinLayer() for all vector joins

deleteFeature(self, fid: int, context: QgsVectorLayer.DeleteContext | None = None) bool[source]

Deletes a feature from joined layers. The feature id given in parameter is the one coming from the target layer.

Parameters:
  • fid (int) – The feature id from the target layer to delete

  • context (Optional[QgsVectorLayer.DeleteContext] = None) – The chain of features which will be deleted for feedback and to avoid infinite recursions. Can be None.

Return type:

bool

Returns:

False if an error happened, True otherwise

deleteFeatures(self, fids: Any, context: QgsVectorLayer.DeleteContext | None = None) bool[source]

Deletes a list of features from joined layers. Feature ids given in a parameter are those coming from the target layer.

Parameters:
  • fids (Any) – Feature ids from the target layer to delete

  • context (Optional[QgsVectorLayer.DeleteContext] = None) – The chain of features who will be deleted for feedback and to avoid infinite recursions. Can be None.

Return type:

bool

Returns:

False if an error happened, True otherwise

isAuxiliaryJoin(self, info: QgsVectorLayerJoinInfo) bool[source]

Returns True if the join information is about auxiliary layer, False otherwise

Parameters:

info (QgsVectorLayerJoinInfo) – The join information

Return type:

bool

Returns:

True if the join information is about auxiliary layer, False otherwise

joinForFieldIndex(self, index: int, fields: QgsFields)[source]

Finds the vector join for a layer field index.

Parameters:
  • index (int) – this layers attribute index

  • fields (QgsFields) -> (Optional[QgsVectorLayerJoinInfo]) – fields of the vector layer (including joined fields)

Returns:

  • the vector layer join info

  • sourceFieldIndex: Output: field’s index in source layer

static joinSubsetIndices(joinLayer: QgsVectorLayer | None, joinFieldsSubset: Iterable[str | None]) List[int]

Returns a vector of indices for use in join based on field names from the layer

Parameters:
  • joinLayer (Optional[QgsVectorLayer])

  • joinFieldsSubset (Iterable[Optional[str]])

Return type:

List[int]

static joinSubsetIndices(joinLayerFields: QgsFields, joinFieldsSubset: Iterable[str | None]) List[int]

Returns a vector of indices for use in join based on field names from the join layer’s fields.

Added in version 3.20.

Parameters:
  • joinLayerFields (QgsFields)

  • joinFieldsSubset (Iterable[Optional[str]])

Return type:

List[int]

joinedFeatureOf(self, info: QgsVectorLayerJoinInfo | None, feature: QgsFeature) QgsFeature[source]

Returns the joined feature corresponding to the feature.

Parameters:
Return type:

QgsFeature

signal joinedFieldsChanged[source]

Emitted whenever the list of joined fields changes (e.g. added join or joined layer’s fields change)

joinedFieldsOffset(self, info: QgsVectorLayerJoinInfo | None, fields: QgsFields) int[source]

Find out what is the first index of the join within fields. Returns -1 if join is not present

Parameters:
Return type:

int

joinsWhereFieldIsId(self, field: QgsField) List[QgsVectorLayerJoinInfo]

Returns joins where the field of a target layer is considered as an id.

Parameters:

field (QgsField) – the field of a target layer

Return type:

List[QgsVectorLayerJoinInfo]

Returns:

a list of vector joins

readXml(self, layer_node: QDomNode)[source]

Reads joins from project file. Does not resolve layer IDs to layers - call resolveReferences() afterwards

Parameters:

layer_node (QDomNode)

removeJoin(self, joinLayerId: str | None) bool[source]

Removes a vector layer join

Return type:

bool

Returns:

True if join was found and successfully removed

Parameters:

joinLayerId (Optional[str])

resolveReferences(self, project: QgsProject | None)[source]

Resolves layer IDs of joined layers using given project’s available layers

Parameters:

project (Optional[QgsProject])

targetedFeatureOf(self, info: QgsVectorLayerJoinInfo | None, feature: QgsFeature) QgsFeature[source]

Returns the targeted feature corresponding to the joined feature.

Parameters:
Return type:

QgsFeature

updateFields(self, fields: QgsFields)[source]

Updates field map with joined attributes

Parameters:

fields (QgsFields) – map to append joined attributes

vectorJoins(self) List[QgsVectorLayerJoinInfo]
Return type:

List[QgsVectorLayerJoinInfo]

writeXml(self, layer_node: QDomNode, document: QDomDocument)[source]

Saves mVectorJoins to xml under the layer node

Parameters:
  • layer_node (QDomNode)

  • document (QDomDocument)