Skip to content

Commit bfa507a

Browse files
committed
Respect default values in N:M relation linking table
1 parent 72c8335 commit bfa507a

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/gui/qgsrelationeditorwidget.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,10 +306,22 @@ void QgsRelationEditorWidget::addFeature()
306306
QgsFeature f;
307307
if ( vlTools->addFeature( mNmRelation.referencedLayer(), QgsAttributeMap(), QgsGeometry(), &f ) )
308308
{
309-
QgsFeature flink( mRelation.referencingLayer()->fields() ); // Linking feature
309+
QgsFields fields = mRelation.referencingLayer()->fields();
310+
QgsFeature flink( fields ); // Linking feature
311+
int attrCount = fields.size();
310312

311-
flink.setAttribute( mRelation.fieldPairs().at( 0 ).first, mFeature.attribute( mRelation.fieldPairs().at( 0 ).second ) );
312-
flink.setAttribute( mNmRelation.referencingFields().at( 0 ), f.attribute( mNmRelation.referencedFields().at( 0 ) ) );
313+
int firstIdx = fields.indexFromName( mRelation.fieldPairs().at( 0 ).first );
314+
int secondIdx = mNmRelation.referencingFields().at( 0 );
315+
316+
for ( int i = 0; i < attrCount; ++i )
317+
{
318+
if ( i == firstIdx )
319+
flink.setAttribute( i, mFeature.attribute( mRelation.fieldPairs().at( 0 ).second ) );
320+
else if ( i == secondIdx )
321+
flink.setAttribute( i, f.attribute( mNmRelation.referencedFields().at( 0 ) ) );
322+
else
323+
flink.setAttribute( i, mRelation.referencingLayer()->defaultValue( i ) );
324+
}
313325

314326
mRelation.referencingLayer()->addFeature( flink );
315327

0 commit comments

Comments
 (0)