diff --git a/beat/web/backend/migrations/0002_scheduler_addons.py b/beat/web/backend/migrations/0002_scheduler_addons.py
index 2b9c58fd220df15fd4e96b85ed53c26047adf189..c81528b3d27f2cf769b7f25f1d64742143a58595 100644
--- a/beat/web/backend/migrations/0002_scheduler_addons.py
+++ b/beat/web/backend/migrations/0002_scheduler_addons.py
@@ -141,7 +141,7 @@ class Migration(migrations.Migration):
                 ('start_date', models.DateTimeField(null=True, blank=True)),
                 ('end_date', models.DateTimeField(null=True, blank=True)),
                 ('split_errors', models.PositiveIntegerField(default=0)),
-                ('block', models.ForeignKey(related_name='job', on_delete=models.deletion.SET_NULL, to='experiments.Block', null=True)),
+                ('block', models.OneToOneField(related_name='job', on_delete=models.deletion.CASCADE, to='experiments.Block', null=True)),
                 ('parent', models.ForeignKey(related_name='child', to='backend.Job', null=True)),
                 ('result', models.ForeignKey(to='backend.Result', null=True)),
             ],
diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py
index 8113411f2d57c949b0b86eae184bc1c48b76caab..9fba37b6b6e70038166b93d0c0e095d69ad0bcad 100644
--- a/beat/web/backend/models.py
+++ b/beat/web/backend/models.py
@@ -130,6 +130,9 @@ class Environment(Shareable):
             args=(self.name, self.version,),
             )
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_environment_change', args=(self.id,))
+
     def queues_for(self, user):
         """Returns all queues associated to this environment for which the user
         has the 'can_access' permission"""
@@ -193,9 +196,13 @@ class Worker(models.Model):
         return self.name
 
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_worker_change', args=(self.id,))
+
+
     def load(self):
         '''Calculates the number of cores being used currently'''
-        return sum([j.job.block.queue.cores_per_slot for j in self.splits])
+        return sum([j.job.block.queue.cores_per_slot for j in self.splits.all()])
 
 
     def available_cores(self):
@@ -275,6 +282,9 @@ class Queue(models.Model):
         return self.name
 
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_queue_change', args=(self.id,))
+
     #_____ Utilities __________
 
     def number_of_slots(self):
@@ -447,8 +457,8 @@ class Job(models.Model):
         (CANCELLED,  'Cancelled'),
     )
 
-    block = models.ForeignKey('experiments.Block', null=True,
-        on_delete=models.SET_NULL, related_name='job')
+    block = models.OneToOneField('experiments.Block', null=True,
+        on_delete=models.CASCADE, related_name='job')
 
     status = models.CharField(max_length=1, choices=STATUS, default=QUEUED)