Add SQL indexes for default ordering on applicable models

This commit is contained in:
Jeremy Stretch
2026-04-03 16:22:18 -04:00
parent b62c5e1ac4
commit 84502e80d0
26 changed files with 111 additions and 0 deletions

View File

@@ -144,6 +144,9 @@ class Circuit(ContactsMixin, ImageAttachmentsMixin, DistanceMixin, PrimaryModel)
name='%(app_label)s_%(class)s_unique_provideraccount_cid'
),
)
indexes = (
models.Index(fields=('provider', 'provider_account', 'cid')), # Default ordering
)
verbose_name = _('circuit')
verbose_name_plural = _('circuits')
@@ -221,6 +224,9 @@ class CircuitGroupAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin,
name='%(app_label)s_%(class)s_unique_member_group'
),
)
indexes = (
models.Index(fields=('group', 'member_type', 'member_id', 'priority', 'id')), # Default ordering
)
verbose_name = _('Circuit group assignment')
verbose_name_plural = _('Circuit group assignments')

View File

@@ -97,6 +97,9 @@ class VirtualCircuit(ContactsMixin, PrimaryModel):
name='%(app_label)s_%(class)s_unique_provideraccount_cid'
),
)
indexes = (
models.Index(fields=('provider_network', 'provider_account', 'cid')), # Default ordering
)
verbose_name = _('virtual circuit')
verbose_name_plural = _('virtual circuits')
@@ -150,6 +153,9 @@ class VirtualCircuitTermination(
class Meta:
ordering = ['virtual_circuit', 'role', 'pk']
indexes = (
models.Index(fields=('virtual_circuit', 'role', 'id')), # Default ordering
)
verbose_name = _('virtual circuit termination')
verbose_name_plural = _('virtual circuit terminations')

View File

@@ -37,6 +37,9 @@ class ConfigRevision(models.Model):
class Meta:
ordering = ['-created']
indexes = (
models.Index(fields=('-created',)), # Default ordering
)
verbose_name = _('config revision')
verbose_name_plural = _('config revisions')
constraints = [

View File

@@ -133,6 +133,7 @@ class Job(models.Model):
class Meta:
ordering = ['-created']
indexes = (
models.Index(fields=('-created',)), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
verbose_name = _('job')

View File

@@ -143,6 +143,9 @@ class ModularComponentTemplateModel(ComponentTemplateModel):
name='%(app_label)s_%(class)s_unique_module_type_name'
),
)
indexes = (
models.Index(fields=('device_type', 'module_type', 'name')), # Default ordering
)
def to_objectchange(self, action):
objectchange = super().to_objectchange(action)

View File

@@ -737,6 +737,9 @@ class Device(
class Meta:
ordering = ('name', 'pk') # Name may be null
indexes = (
models.Index(fields=('name', 'id')), # Default ordering
)
constraints = (
models.UniqueConstraint(
Lower('name'), 'site', 'tenant',
@@ -1184,6 +1187,9 @@ class VirtualChassis(PrimaryModel):
class Meta:
ordering = ['name']
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('virtual chassis')
verbose_name_plural = _('virtual chassis')
@@ -1290,6 +1296,9 @@ class VirtualDeviceContext(PrimaryModel):
name='%(app_label)s_%(class)s_device_name'
),
)
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('virtual device context')
verbose_name_plural = _('virtual device contexts')
@@ -1356,6 +1365,7 @@ class MACAddress(PrimaryModel):
class Meta:
ordering = ('mac_address', 'pk')
indexes = (
models.Index(fields=('mac_address', 'id')), # Default ordering
models.Index(fields=('assigned_object_type', 'assigned_object_id')),
)
verbose_name = _('MAC address')

View File

@@ -113,6 +113,9 @@ class ModuleType(ImageAttachmentsMixin, PrimaryModel, WeightMixin):
name='%(app_label)s_%(class)s_unique_manufacturer_model'
),
)
indexes = (
models.Index(fields=('profile', 'manufacturer', 'model')), # Default ordering
)
verbose_name = _('module type')
verbose_name_plural = _('module types')

View File

@@ -390,6 +390,9 @@ class Rack(ContactsMixin, ImageAttachmentsMixin, TrackingModelMixin, RackBase):
name='%(app_label)s_%(class)s_unique_location_facility_id'
),
)
indexes = (
models.Index(fields=('site', 'location', 'name', 'id')), # Default ordering
)
verbose_name = _('rack')
verbose_name_plural = _('racks')
@@ -738,6 +741,9 @@ class RackReservation(PrimaryModel):
class Meta:
ordering = ['created', 'pk']
indexes = (
models.Index(fields=('created', 'id')), # Default ordering
)
verbose_name = _('rack reservation')
verbose_name_plural = _('rack reservations')

View File

@@ -176,6 +176,9 @@ class ConfigContext(SyncedDataMixin, CloningMixin, CustomLinksMixin, OwnerMixin,
class Meta:
ordering = ['weight', 'name']
indexes = (
models.Index(fields=('weight', 'name')), # Default ordering
)
verbose_name = _('config context')
verbose_name_plural = _('config contexts')
@@ -294,6 +297,9 @@ class ConfigTemplate(
class Meta:
ordering = ('name',)
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('config template')
verbose_name_plural = _('config templates')

View File

@@ -274,6 +274,9 @@ class CustomField(CloningMixin, ExportTemplatesMixin, OwnerMixin, ChangeLoggedMo
class Meta:
ordering = ['group_name', 'weight', 'name']
indexes = (
models.Index(fields=('group_name', 'weight', 'name')), # Default ordering
)
verbose_name = _('custom field')
verbose_name_plural = _('custom fields')

View File

@@ -356,6 +356,9 @@ class CustomLink(CloningMixin, ExportTemplatesMixin, OwnerMixin, ChangeLoggedMod
class Meta:
ordering = ['group_name', 'weight', 'name']
indexes = (
models.Index(fields=('group_name', 'weight', 'name')), # Default ordering
)
verbose_name = _('custom link')
verbose_name_plural = _('custom links')
@@ -429,6 +432,9 @@ class ExportTemplate(
class Meta:
ordering = ('name',)
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('export template')
verbose_name_plural = _('export templates')
@@ -515,6 +521,9 @@ class SavedFilter(CloningMixin, ExportTemplatesMixin, OwnerMixin, ChangeLoggedMo
class Meta:
ordering = ('weight', 'name')
indexes = (
models.Index(fields=('weight', 'name')), # Default ordering
)
verbose_name = _('saved filter')
verbose_name_plural = _('saved filters')
@@ -597,6 +606,9 @@ class TableConfig(CloningMixin, ChangeLoggedModel):
class Meta:
ordering = ('weight', 'name')
indexes = (
models.Index(fields=('weight', 'name')), # Default ordering
)
verbose_name = _('table config')
verbose_name_plural = _('table configs')
@@ -700,6 +712,7 @@ class ImageAttachment(ChangeLoggedModel):
class Meta:
ordering = ('name', 'pk') # name may be non-unique
indexes = (
models.Index(fields=('name', 'id')), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
verbose_name = _('image attachment')
@@ -810,6 +823,7 @@ class JournalEntry(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ExportTemplat
class Meta:
ordering = ('-created',)
indexes = (
models.Index(fields=('-created',)), # Default ordering
models.Index(fields=('assigned_object_type', 'assigned_object_id')),
)
verbose_name = _('journal entry')
@@ -865,6 +879,7 @@ class Bookmark(models.Model):
class Meta:
ordering = ('created', 'pk')
indexes = (
models.Index(fields=('created', 'id')), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
constraints = (

View File

@@ -73,6 +73,7 @@ class Notification(models.Model):
class Meta:
ordering = ('-created', 'pk')
indexes = (
models.Index(fields=('-created', 'id')), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
constraints = (
@@ -215,6 +216,7 @@ class Subscription(models.Model):
class Meta:
ordering = ('-created', 'user')
indexes = (
models.Index(fields=('-created', 'user')), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
constraints = (

View File

@@ -62,6 +62,9 @@ class Script(EventRulesMixin, JobsMixin):
name='extras_script_unique_name_module'
),
)
indexes = (
models.Index(fields=('module', 'name')), # Default ordering
)
verbose_name = _('script')
verbose_name_plural = _('scripts')

View File

@@ -52,6 +52,9 @@ class Tag(CloningMixin, ExportTemplatesMixin, OwnerMixin, ChangeLoggedModel, Tag
class Meta:
ordering = ('weight', 'name')
indexes = (
models.Index(fields=('weight', 'name')), # Default ordering
)
verbose_name = _('tag')
verbose_name_plural = _('tags')

View File

@@ -59,6 +59,9 @@ class FHRPGroup(PrimaryModel):
class Meta:
ordering = ['protocol', 'group_id', 'pk']
indexes = (
models.Index(fields=('protocol', 'group_id', 'id')), # Default ordering
)
verbose_name = _('FHRP group')
verbose_name_plural = _('FHRP groups')
@@ -105,6 +108,7 @@ class FHRPGroupAssignment(ChangeLoggedModel):
class Meta:
ordering = ('-priority', 'pk')
indexes = (
models.Index(fields=('-priority', 'id')), # Default ordering
models.Index(fields=('interface_type', 'interface_id')),
)
constraints = (

View File

@@ -110,6 +110,9 @@ class Aggregate(ContactsMixin, GetAvailablePrefixesMixin, PrimaryModel):
class Meta:
ordering = ('prefix', 'pk') # prefix may be non-unique
indexes = (
models.Index(fields=('prefix', 'id')), # Default ordering
)
verbose_name = _('aggregate')
verbose_name_plural = _('aggregates')
@@ -200,6 +203,9 @@ class Role(OrganizationalModel):
class Meta:
ordering = ('weight', 'name')
indexes = (
models.Index(fields=('weight', 'name')), # Default ordering
)
verbose_name = _('role')
verbose_name_plural = _('roles')
@@ -833,6 +839,7 @@ class IPAddress(ContactsMixin, PrimaryModel):
class Meta:
ordering = ('address', 'pk') # address may be non-unique
indexes = (
models.Index(fields=('address', 'id')), # Default ordering
models.Index(Cast(Host('address'), output_field=IPAddressField()), name='ipam_ipaddress_host'),
models.Index(fields=('assigned_object_type', 'assigned_object_id')),
)

View File

@@ -93,6 +93,7 @@ class Service(ContactsMixin, ServiceBase, PrimaryModel):
class Meta:
indexes = (
models.Index(fields=('protocol', 'ports', 'id')), # Default ordering
models.Index(fields=('parent_object_type', 'parent_object_id')),
)
ordering = ('protocol', 'ports', 'pk') # (protocol, port) may be non-unique

View File

@@ -267,6 +267,9 @@ class VLAN(PrimaryModel):
class Meta:
ordering = ('site', 'group', 'vid', 'pk') # (site, group, vid) may be non-unique
indexes = (
models.Index(fields=('site', 'group', 'vid', 'id')), # Default ordering
)
constraints = (
models.UniqueConstraint(
fields=('group', 'vid'),

View File

@@ -58,6 +58,9 @@ class VRF(PrimaryModel):
class Meta:
ordering = ('name', 'rd', 'pk') # (name, rd) may be non-unique
indexes = (
models.Index(fields=('name', 'rd', 'id')), # Default ordering
)
verbose_name = _('VRF')
verbose_name_plural = _('VRFs')

View File

@@ -90,6 +90,9 @@ class Contact(PrimaryModel):
class Meta:
ordering = ['name']
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('contact')
verbose_name_plural = _('contacts')
@@ -130,6 +133,7 @@ class ContactAssignment(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, Chan
class Meta:
ordering = ('contact', 'priority', 'role', 'pk')
indexes = (
models.Index(fields=('contact', 'priority', 'role', 'id')), # Default ordering
models.Index(fields=('object_type', 'object_id')),
)
constraints = (

View File

@@ -52,6 +52,9 @@ class ObjectPermission(CloningMixin, models.Model):
class Meta:
ordering = ['name']
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('permission')
verbose_name_plural = _('permissions')

View File

@@ -117,6 +117,9 @@ class Token(models.Model):
class Meta:
ordering = ('-created',)
indexes = (
models.Index(fields=('-created',)), # Default ordering
)
verbose_name = _('token')
verbose_name_plural = _('tokens')
constraints = [

View File

@@ -97,6 +97,9 @@ class Cluster(ContactsMixin, CachedScopeMixin, PrimaryModel):
class Meta:
ordering = ['name']
indexes = (
models.Index(fields=('name',)), # Default ordering
)
constraints = (
models.UniqueConstraint(
fields=('group', 'name'),

View File

@@ -92,6 +92,9 @@ class VirtualMachineType(ImageAttachmentsMixin, PrimaryModel):
violation_error_message=_('Virtual machine type slug must be unique.'),
),
)
indexes = (
models.Index(fields=('name',)), # Default ordering
)
verbose_name = _('virtual machine type')
verbose_name_plural = _('virtual machine types')
@@ -249,6 +252,9 @@ class VirtualMachine(
class Meta:
ordering = ('name', 'pk') # Name may be non-unique
indexes = (
models.Index(fields=('name', 'id')), # Default ordering
)
constraints = (
models.UniqueConstraint(
Lower('name'), 'cluster', 'tenant',

View File

@@ -145,6 +145,9 @@ class TunnelTermination(CustomFieldsMixin, CustomLinksMixin, TagsMixin, ChangeLo
violation_error_message=_("An object may be terminated to only one tunnel at a time.")
),
)
indexes = (
models.Index(fields=('tunnel', 'role', 'id')), # Default ordering
)
verbose_name = _('tunnel termination')
verbose_name_plural = _('tunnel terminations')

View File

@@ -118,6 +118,7 @@ class WirelessLAN(WirelessAuthenticationBase, CachedScopeMixin, PrimaryModel):
class Meta:
ordering = ('ssid', 'pk')
indexes = (
models.Index(fields=('ssid', 'id')), # Default ordering
models.Index(fields=('scope_type', 'scope_id')),
)
verbose_name = _('wireless LAN')