diff --git a/netbox/dcim/migrations/0182_inventoryitem_uniqueness_fix.py b/netbox/dcim/migrations/0182_inventoryitem_uniqueness_fix.py new file mode 100644 index 00000000000..85cd2196bb5 --- /dev/null +++ b/netbox/dcim/migrations/0182_inventoryitem_uniqueness_fix.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.5 on 2023-09-15 14:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0181_rename_device_role_device_role'), + ] + + operations = [ + migrations.AddConstraint( + model_name='inventoryitem', + constraint=models.UniqueConstraint(condition=models.Q(('parent__isnull', True)), fields=('device', 'name'), name='dcim_inventoryitem_unique_device_name'), + ), + ] diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index f42ae58954c..76c378cc0ce 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -1246,6 +1246,11 @@ class Meta: fields=('device', 'parent', 'name'), name='%(app_label)s_%(class)s_unique_device_parent_name' ), + models.UniqueConstraint( + fields=('device', 'name'), + name='%(app_label)s_%(class)s_unique_device_name', + condition=Q(parent__isnull=True) + ), ) verbose_name = _('inventory item') verbose_name_plural = _('inventory items')