diff --git a/uffd/role/models.py b/uffd/role/models.py
index fa60c9be88555293a305f877d4b84299a5e60214..8bd6fcfcbac5f9ff289f9c6ff845dff232a4304e 100644
--- a/uffd/role/models.py
+++ b/uffd/role/models.py
@@ -8,7 +8,7 @@ from uffd.user.models import User
 class RoleGroup(db.Model):
 	__tablename__ = 'role_groups'
 	role_id = Column(Integer(), ForeignKey('role.id', onupdate='CASCADE', ondelete='CASCADE'), primary_key=True)
-	role = relationship('Role')
+	role = relationship('Role', back_populates='groups')
 	group_id = Column(Integer(), ForeignKey('group.id', onupdate='CASCADE', ondelete='CASCADE'), primary_key=True)
 	group = relationship('Group')
 	requires_mfa = Column(Boolean(), default=False, nullable=False)
@@ -94,7 +94,7 @@ class Role(db.Model):
 
 	members = relationship('User', secondary='role_members', back_populates='roles')
 
-	groups = relationship('RoleGroup', collection_class=RoleGroupMap, cascade='all, delete-orphan')
+	groups = relationship('RoleGroup', collection_class=RoleGroupMap, cascade='all, delete-orphan', back_populates='role')
 
 	# Roles that are managed externally (e.g. by Ansible) can be locked to
 	# prevent accidental editing of name, moderator group, included roles
diff --git a/uffd/user/models.py b/uffd/user/models.py
index 4878ba0d4e6741d5e1e4fa017ff23088153c49fb..ad6f3a7a7470323a1044acc692b4339c9ac4a905 100644
--- a/uffd/user/models.py
+++ b/uffd/user/models.py
@@ -84,7 +84,7 @@ class User(db.Model):
 	mail = Column(String(128), nullable=False)
 	pwhash = Column(String(256), nullable=True)
 	is_service_user = Column(Boolean(), default=False, nullable=False)
-	groups = relationship('Group', secondary='user_groups')
+	groups = relationship('Group', secondary='user_groups', back_populates='members')
 	roles = relationship('Role', secondary='role_members', back_populates='members')
 
 	@property
@@ -169,7 +169,7 @@ class Group(db.Model):
 	unix_gid = Column(Integer(), unique=True, nullable=False, default=get_next_unix_gid)
 	name = Column(String(32), unique=True, nullable=False)
 	description = Column(String(128), nullable=False, default='')
-	members = relationship('User', secondary='user_groups')
+	members = relationship('User', secondary='user_groups', back_populates='groups')
 
 	def set_name(self, value):
 		if len(value) > 32 or len(value) < 1: