diff --git a/ippisite/ippidb/migrations/0040_compound_families.py b/ippisite/ippidb/migrations/0040_compound_families.py
new file mode 100644
index 0000000000000000000000000000000000000000..fa2b630f5a7d949cad2447e3736d1049876b773d
--- /dev/null
+++ b/ippisite/ippidb/migrations/0040_compound_families.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.1 on 2019-12-19 14:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('ippidb', '0039_auto_20191216_1438'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='compound',
+            name='families',
+            field=models.TextField(blank=True, null=True, verbose_name='PPI family names'),
+        ),
+    ]
diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py
index 6af2ed3820457e59ba305362906e7c22b62dad29..70d5d2e26c76f0d445b7fb25e994e401538c5f3c 100644
--- a/ippisite/ippidb/models.py
+++ b/ippisite/ippidb/models.py
@@ -714,6 +714,8 @@ class Compound(AutoFillableModel):
     best_activity_ppi_family_name = models.CharField(
         "Best activity PPI family name", max_length=30, null=True, blank=True
     )
+    families = models.TextField("PPI family names", null=True, blank=True)
+
     le = models.FloatField(verbose_name="Ligand efficiency", null=True, blank=True)
     lle = models.FloatField(verbose_name="Lipophilic efficiency", null=True, blank=True)
     lipinsky_mw = models.BooleanField("MW ok for Lipinsky", null=True, blank=True)
@@ -875,13 +877,6 @@ class Compound(AutoFillableModel):
             .count()
         )
 
-    @property
-    def families(self):
-        """
-        return the all PPI families for PPIs involved in the compound activity of the compound
-        """
-        return list(set([ca.ppi.family for ca in self.compoundaction_set.all()]))
-
     @property
     def sorted_similar_drugbank_compounds(self):
         return self.drugbankcompoundtanimoto_set.order_by("-tanimoto")
@@ -1283,6 +1278,9 @@ class Contribution(models.Model):
 
 
 def update_compound_cached_properties():
+    for c in Compound.objects.all():
+        c.families = ', '.join(list(set([ca.ppi.family.name for ca in c.compoundaction_set.all()])))
+        c.save()
     Compound.objects.update(
         pubs=Subquery(
             Compound.objects.filter(id=OuterRef("id"))
diff --git a/ippisite/ippidb/templates/compound_t_list.html b/ippisite/ippidb/templates/compound_t_list.html
index 43fba1c554bf9172ec3c057cae9e6cda06b01ccc..09b6e2ecf1a90dc78a8fb82d60f66f61fe03456d 100644
--- a/ippisite/ippidb/templates/compound_t_list.html
+++ b/ippisite/ippidb/templates/compound_t_list.html
@@ -40,7 +40,7 @@
         <td scope="col">{{ compound.common_name|default_if_none:"-" }}</td>
       {% endif %}
       {% if "families" in fields %}
-        <td scope="col">{% for family in compound.families %}{{ family.name }}{% if not forloop.last %}, {% endif %}{% endfor %}</td>
+        <td scope="col">{{ compound.families }}</td>
       {% endif %}
       {% if "pubs" in fields %}
         <td scope="col">{{ compound.pubs }}</td>