diff --git a/netbox/ipam/tables.py b/netbox/ipam/tables.py
index 4c5bbee3a..c669362c5 100644
--- a/netbox/ipam/tables.py
+++ b/netbox/ipam/tables.py
@@ -43,12 +43,22 @@ IPADDRESS_LINK = """
{% if record.pk %}
{{ record.address }}
{% elif perms.ipam.add_ipaddress %}
- {% if record.0 <= 65536 %}{{ record.0 }}{% else %}Lots of{% endif %} free IP{{ record.0|pluralize }}
+ {% if record.0 <= 65536 %}{{ record.0 }}{% else %}Lots of{% endif %} free IP{{ record.0|pluralize }}
{% else %}
{{ record.0 }}
{% endif %}
"""
+VRF_LINK = """
+{% if record.vrf %}
+ {{ record.vrf }}
+{% elif prefix.vrf %}
+ {{ prefix.vrf }}
+{% else %}
+ Global
+{% endif %}
+"""
+
STATUS_LABEL = """
{% if record.pk %}
{{ record.get_status_display }}
@@ -149,7 +159,7 @@ class PrefixTable(BaseTable):
pk = ToggleColumn()
status = tables.TemplateColumn(STATUS_LABEL, verbose_name='Status')
prefix = tables.TemplateColumn(PREFIX_LINK, verbose_name='Prefix')
- vrf = tables.LinkColumn('ipam:vrf', args=[Accessor('vrf.pk')], default='Global', verbose_name='VRF')
+ vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
tenant = tables.TemplateColumn(TENANT_LINK, verbose_name='Tenant')
site = tables.LinkColumn('dcim:site', args=[Accessor('site.slug')], verbose_name='Site')
role = tables.Column(verbose_name='Role')
@@ -183,7 +193,7 @@ class PrefixBriefTable(BaseTable):
class IPAddressTable(BaseTable):
pk = ToggleColumn()
address = tables.TemplateColumn(IPADDRESS_LINK, verbose_name='IP Address')
- vrf = tables.LinkColumn('ipam:vrf', args=[Accessor('vrf.pk')], default='Global', verbose_name='VRF')
+ vrf = tables.TemplateColumn(VRF_LINK, verbose_name='VRF')
tenant = tables.TemplateColumn(TENANT_LINK, verbose_name='Tenant')
device = tables.LinkColumn('dcim:device', args=[Accessor('interface.device.pk')], orderable=False,
verbose_name='Device')