diff --git a/app/models.py b/app/models.py
index ba139e9196a78130686c2146bc30a14290ca07f1..a67c6975ac5d65402be2695f3486610f899f8360 100644
--- a/app/models.py
+++ b/app/models.py
@@ -151,25 +151,31 @@ class User(UserMixin, db.Model):
     def password(self, password):
         self.password_hash = generate_password_hash(password)
 
-    def to_dict(self):
-        return {'id': self.id,
-                'role_id': self.role_id,
-                'confirmed': self.confirmed,
-                'email': self.email,
-                'last_seen': self.last_seen.timestamp(),
-                'member_since': self.member_since.timestamp(),
-                'settings': {'dark_mode': self.setting_dark_mode,
-                             'job_status_mail_notifications':
-                                 self.setting_job_status_mail_notifications,
-                             'job_status_site_notifications':
-                                 self.setting_job_status_site_notifications},
-                'username': self.username,
-                'corpora': {corpus.id: corpus.to_dict()
-                            for corpus in self.corpora},
-                'jobs': {job.id: job.to_dict() for job in self.jobs},
-                'query_results': {query_result.id: query_result.to_dict()
-                                  for query_result in self.query_results},
-                'role': self.role.to_dict()}
+    def to_dict(self, include_relationships=True):
+        dict_user = {
+            'id': self.id,
+            'role_id': self.role_id,
+            'confirmed': self.confirmed,
+            'email': self.email,
+            'last_seen': self.last_seen.timestamp(),
+            'member_since': self.member_since.timestamp(),
+            'settings': {'dark_mode': self.setting_dark_mode,
+                         'job_status_mail_notifications':
+                             self.setting_job_status_mail_notifications,
+                         'job_status_site_notifications':
+                             self.setting_job_status_site_notifications},
+            'username': self.username,
+            'role': self.role.to_dict()
+        }
+        if include_relationships:
+            dict_user['corpora'] = {corpus.id: corpus.to_dict()
+                                    for corpus in self.corpora}
+            dict_user['jobs'] = {job.id: job.to_dict() for job in self.jobs}
+            dict_user['query_results'] = {
+                query_result.id: query_result.to_dict()
+                for query_result in self.query_results
+            }
+        return dict_user
 
     def __repr__(self):
         '''
@@ -301,7 +307,7 @@ class JobInput(db.Model):
         '''
         return '<JobInput {}>'.format(self.filename)
 
-    def to_dict(self):
+    def to_dict(self, include_relationships=True):
         return {'download_url': self.download_url,
                 'url': self.url,
                 'id': self.id,
@@ -341,7 +347,7 @@ class JobResult(db.Model):
         '''
         return '<JobResult {}>'.format(self.filename)
 
-    def to_dict(self):
+    def to_dict(self, include_relationships=True):
         return {'download_url': self.download_url,
                 'url': self.url,
                 'id': self.id,
@@ -420,22 +426,26 @@ class Job(db.Model):
         self.end_date = None
         self.status = 'submitted'
 
-    def to_dict(self):
-        return {'url': self.url,
-                'id': self.id,
-                'user_id': self.user_id,
-                'creation_date': self.creation_date.timestamp(),
-                'description': self.description,
-                'end_date': (self.end_date.timestamp() if self.end_date else
-                             None),
-                'service': self.service,
-                'service_args': self.service_args,
-                'service_version': self.service_version,
-                'status': self.status,
-                'title': self.title,
-                'inputs': {input.id: input.to_dict() for input in self.inputs},
-                'results': {result.id: result.to_dict()
-                            for result in self.results}}
+    def to_dict(self, include_relationships=True):
+        dict_job = {
+            'url': self.url,
+            'id': self.id,
+            'user_id': self.user_id,
+            'creation_date': self.creation_date.timestamp(),
+            'description': self.description,
+            'end_date': self.end_date.timestamp() if self.end_date else None,
+            'service': self.service,
+            'service_args': self.service_args,
+            'service_version': self.service_version,
+            'status': self.status,
+            'title': self.title,
+        }
+        if include_relationships:
+            dict_job['inputs'] = {input.id: input.to_dict()
+                                  for input in self.inputs}
+            dict_job['results'] = {result.id: result.to_dict()
+                                   for result in self.results}
+        return dict_job
 
 
 class CorpusFile(db.Model):
@@ -485,7 +495,7 @@ class CorpusFile(db.Model):
         db.session.delete(self)
         self.corpus.status = 'unprepared'
 
-    def to_dict(self):
+    def to_dict(self, include_relationships=True):
         return {'download_url': self.download_url,
                 'url': self.url,
                 'id': self.id,
@@ -539,19 +549,24 @@ class Corpus(db.Model):
     def url(self):
         return url_for('corpora.corpus', corpus_id=self.id)
 
-    def to_dict(self):
-        return {'analysis_url': self.analysis_url,
-                'url': self.url,
-                'id': self.id,
-                'user_id': self.user_id,
-                'creation_date': self.creation_date.timestamp(),
-                'current_nr_of_tokens': self.current_nr_of_tokens,
-                'description': self.description,
-                'status': self.status,
-                'last_edited_date': self.last_edited_date.timestamp(),
-                'max_nr_of_tokens': self.max_nr_of_tokens,
-                'title': self.title,
-                'files': {file.id: file.to_dict() for file in self.files}}
+    def to_dict(self, include_relationships=True):
+        dict_corpus = {
+            'analysis_url': self.analysis_url,
+            'url': self.url,
+            'id': self.id,
+            'user_id': self.user_id,
+            'creation_date': self.creation_date.timestamp(),
+            'current_nr_of_tokens': self.current_nr_of_tokens,
+            'description': self.description,
+            'status': self.status,
+            'last_edited_date': self.last_edited_date.timestamp(),
+            'max_nr_of_tokens': self.max_nr_of_tokens,
+            'title': self.title,
+        }
+        if include_relationships:
+            dict_corpus['files'] = {file.id: file.to_dict()
+                                    for file in self.files}
+        return dict_corpus
 
     def build(self):
         output_dir = os.path.join(self.path, 'merged')
@@ -628,7 +643,7 @@ class QueryResult(db.Model):
         shutil.rmtree(self.path, ignore_errors=True)
         db.session.delete(self)
 
-    def to_dict(self):
+    def to_dict(self, include_relationships=True):
         return {'download_url': self.download_url,
                 'url': self.url,
                 'id': self.id,