$ cat models.py from django.db import models # Create your models here. class Type(models.Model): abbr = models.CharField(max_length=255) name = models.CharField(max_length=255) class Meta: pass class Admin: pass def __str__(self): return self.name class Status(models.Model): name = models.CharField(max_length=255) class Meta: verbose_name_plural = 'Status' class Admin: pass def __str__(self): return self.name class Model(models.Model): name = models.CharField(max_length=255) class Meta: pass class Admin: pass def __str__(self): return self.name class Site(models.Model): abbr = models.CharField(max_length=255) name = models.CharField(max_length=255) class Meta: pass class Admin: pass def __str__(self): return self.name class Os(models.Model): name = models.CharField(max_length=255) class Meta: pass class Admin: pass def __str__(self): return self.name class Product(models.Model): abbr = models.CharField(max_length=255) name = models.CharField(max_length=255) class Meta: pass class Admin: pass def __str__(self): return self.name class Device(models.Model): name = models.CharField("Device Name", max_length=255) model = models.ForeignKey(Model, null=True, blank=True) os = models.ForeignKey(Os, null=True, blank=True) product = models.ForeignKey(Product, null=True, blank=True) type = models.ForeignKey(Type, null=True, blank=True) site = models.ForeignKey(Site, null=True, blank=True) status = models.ForeignKey(Status, null=True, blank=True) default_gw = models.IPAddressField("Default Gateway", null=True, blank=True) mngmnt_gw = models.IPAddressField("Managment Gateway", null=True, blank=True) ntp_server = models.IPAddressField("NTP Server", null=True, blank=True) syslog_pri = models.IPAddressField("Primary Syslog", null=True, blank=True) syslog_sec = models.IPAddressField("Secondary Syslog", null=True, blank=True) nagios_dm = models.CharField("Nagios DM", max_length=255, blank=True) unit_height = models.PositiveIntegerField("Unit Height", default=1, blank=True) rack_num = models.PositiveIntegerField("Rack Number", null=True, blank=True) row_num = models.PositiveIntegerField("Row Number", null=True, blank=True) serial = models.CharField(max_length=255, blank=True) barcode = models.CharField(max_length=255, blank=True) static_route1 = models.CharField(max_length=255, blank=True) class Meta: pass class Admin: list_display = ('name','product','site','type','model','os','default_gw','mngmnt_gw','ntp_server','status') list_filter = ('product','type','site','model','os','status','nagios_dm') search_fields = ['name','model__name','os__name','product__name','product__abbr','type__name','type__abbr', 'site__abbr','site__name','status__name','default_gw','mngmnt_gw','ntp_server','syslog_pri', 'syslog_sec','rack_num','serial','barcode'] fields = ( (None, { 'fields': ('name','model','os','product','type','site','default_gw','mngmnt_gw','ntp_server', 'syslog_pri','syslog_sec','nagios_dm','status','static_route1'), 'classes': 'wide' }), ('Asset Information', { 'classes': 'collapse wide', 'fields': ('unit_height','rack_num','row_num','serial','barcode') }), ) def __str__(self): return self.name class Interface(models.Model): name = models.CharField("Network Interface", max_length=20, core=True, blank=True) ip = models.IPAddressField("IP Address", blank=True) netmask = models.IPAddressField(blank=True) macaddress = models.CharField(max_length=40, blank=True) speed = models.IntegerField(null=True, blank=True) duplex = models.CharField(max_length=4, blank=True) mtu = models.IntegerField(null=True, blank=True) device = models.ForeignKey(Device, edit_inline=models.TABULAR, num_in_admin=3) class Meta: pass def __str__(self): return '%s' % (self.ip)