Class: QgsRelationManager

class qgis.core.QgsRelationManager

Bases: PyQt5.QtCore.QObject

This class manages a set of relations between layers.

QgsRelationManager(project: QgsProject = None) Constructor for QgsRelationManager.

Parameters:

project

associated project (used to notify project of changes)

Methods

addPolymorphicRelation

Adds a new polymorphic relation.

addRelation

Add a relation.

childEvent

clear

Remove any relation managed by this class.

connectNotify

context

Gets the relation context

customEvent

disconnectNotify

discoverRelations

Discover all the relations available from the current layers.

isSignalConnected

polymorphicRelation

Returns the list of relations associated with a polymorphic relation

polymorphicRelations

Returns all the polymorphic relations

receivers

referencedRelations

Gets all relations where this layer is the referenced part (i.e.

referencingRelations

Gets all relations where the specified layer (and field) is the referencing part (i.e.

relation

Gets access to a relation by its id.

relations

Gets access to the relations managed by this class.

relationsByName

Returns a list of relations with matching names.

removePolymorphicRelation

Removes an existing polymorphic relation and it's generated relations.

removeRelation

Remove a relation.

sender

senderSignalIndex

setPolymorphicRelations

Sets the specified polymorphic relations and removes any polymorphic relations currently set.

setRelations

Will set the specified relations and remove any relation currently set.

timerEvent

updateRelationsStatus

Updates relations status

Signals

changed

pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL

relationsLoaded

pyqtSignal(*types, name: str = ..., revision: int = ..., arguments: Sequence = ...) -> PYQT_SIGNAL

addPolymorphicRelation(self, polymorphicRelation: QgsPolymorphicRelation)

Adds a new polymorphic relation. The generated relations are not available, they will be created automatically.

Parameters:

polymorphicRelation (QgsPolymorphicRelation) –

addRelation(self, relation: QgsRelation)

Add a relation. Invalid relations are added only if both referencing layer and referenced layer exist.

Parameters:

relation (QgsRelation) – The relation to add.

changed

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Parameters:
  • name (str = ...) –

  • revision (int = ...) –

  • arguments (Sequence = ...) –

Return type:

PYQT_SIGNAL

childEvent(self, QChildEvent)
clear(self)

Remove any relation managed by this class.

connectNotify(self, QMetaMethod)
context(self) QgsRelationContext

Gets the relation context

Return type:

QgsRelationContext

customEvent(self, QEvent)
disconnectNotify(self, QMetaMethod)
discoverRelations(existingRelations: Iterable[QgsRelation], layers: Iterable[QgsVectorLayer]) List[QgsRelation]

Discover all the relations available from the current layers.

Parameters:
  • existingRelations (Iterable[QgsRelation]) – the existing relations to filter them out

  • layers (Iterable[QgsVectorLayer]) – the current layers

Return type:

List[QgsRelation]

Returns:

the list of discovered relations

New in version 3.0.

isSignalConnected(self, QMetaMethod) bool
polymorphicRelation(self, polymorphicRelationId: str) QgsPolymorphicRelation

Returns the list of relations associated with a polymorphic relation

Parameters:

polymorphicRelationId (str) –

Return type:

QgsPolymorphicRelation

polymorphicRelations(self) Dict[str, QgsPolymorphicRelation]

Returns all the polymorphic relations

Return type:

Dict[str, QgsPolymorphicRelation]

receivers(self, PYQT_SIGNAL) int
referencedRelations(self, layer: QgsVectorLayer = None) List[QgsRelation]

Gets all relations where this layer is the referenced part (i.e. the parent table with the primary key being referenced from another layer).

Parameters:

layer (QgsVectorLayer = None) – The layer which should be searched for.

Return type:

List[QgsRelation]

Returns:

A list of relations where the specified layer is the referenced part.

referencingRelations(self, layer: QgsVectorLayer = None, fieldIdx: int = -2) List[QgsRelation]

Gets all relations where the specified layer (and field) is the referencing part (i.e. the child table with the foreign key).

Parameters:
  • layer (QgsVectorLayer = None) – The layer which should be searched for.

  • fieldIdx (int = -2) – The field which should be part of the foreign key. If not set will return all relations.

Return type:

List[QgsRelation]

Returns:

A list of relations matching the given layer and fieldIdx.

relation(self, id: str) QgsRelation

Gets access to a relation by its id.

Parameters:

id (str) – The id to search for

Return type:

QgsRelation

Returns:

A relation. Invalid if not found.

relations(self) Dict[str, QgsRelation]

Gets access to the relations managed by this class.

Return type:

Dict[str, QgsRelation]

Returns:

A QMap where the key is the relation id, the value the relation object.

relationsByName(self, name: str) List[QgsRelation]

Returns a list of relations with matching names.

Parameters:

name (str) – relation name to search for. Searching is case insensitive.

Return type:

List[QgsRelation]

Returns:

a list of matching relations

See also

relation()

New in version 2.16.

relationsLoaded

pyqtSignal(*types, name: str = …, revision: int = …, arguments: Sequence = …) -> PYQT_SIGNAL

types is normally a sequence of individual types. Each type is either a type object or a string that is the name of a C++ type. Alternatively each type could itself be a sequence of types each describing a different overloaded signal. name is the optional C++ name of the signal. If it is not specified then the name of the class attribute that is bound to the signal is used. revision is the optional revision of the signal that is exported to QML. If it is not specified then 0 is used. arguments is the optional sequence of the names of the signal’s arguments.

Parameters:
  • name (str = ...) –

  • revision (int = ...) –

  • arguments (Sequence = ...) –

Return type:

PYQT_SIGNAL

removePolymorphicRelation(self, polymorphicRelationId: str)

Removes an existing polymorphic relation and it’s generated relations.

Parameters:

polymorphicRelationId (str) –

removeRelation(self, id: str)

Remove a relation.

Parameters:

id (str) – The id of the relation to remove.

removeRelation(self, relation: QgsRelation) Remove a relation.

Parameters:

relation – The relation to remove.

sender(self) QObject
senderSignalIndex(self) int
setPolymorphicRelations(self, relations: Iterable[QgsPolymorphicRelation])

Sets the specified polymorphic relations and removes any polymorphic relations currently set. Will remove any generated relations and recreate them.

Parameters:

relations (Iterable[QgsPolymorphicRelation]) –

setRelations(self, relations: Iterable[QgsRelation])

Will set the specified relations and remove any relation currently set.

Parameters:

relations (Iterable[QgsRelation]) – A list of relations to set.

timerEvent(self, QTimerEvent)
updateRelationsStatus(self)

Updates relations status