First, an excerpt from my models.py and the traceback:

---------------------------------------------------------

class Loc(models.Model):
        added = models.DateTimeField(auto_now_add=True)
        updated = models.DateTimeField(auto_now=True)
        name = models.CharField(max_length=100)
        alias = models.CharField(max_length=50)
        company = models.CharField('Provided by', max_length=100)
        address = models.CharField(max_length=255)
        phone = models.IntegerField('Contact Phone Number')
        email = models.EmailField('Contact Email', max_length=75)
        acct = models.CharField('Account Number(s)', max_length=255)
        cid = models.CharField('Circuit ID(s)', max_length=255)

class APC(models.Model):
        added = models.DateTimeField(auto_now_add=True)
        updated = models.DateTimeField(auto_now=True)
        name = models.CharField(max_length=100)
        domain = models.CharField(max_length=255)
        ip = models.IPAddressField()
        nagios = models.BooleanField()
        switch = models.ForeignKey(Switches)
        loc = models.ForeignKey(Loc)
        snmp = models.BooleanField()

class Switches(models.Model):
        added = models.DateTimeField(auto_now_add=True)
        updated = models.DateTimeField(auto_now=True)
        name = models.CharField(max_length=100)
        domain = models.CharField(max_length=255)
        ip = models.IPAddressField()
        nagios = models.BooleanField()
        apc = models.ForeignKey(APC)
        loc = models.ForeignKey(Loc)
        snmp = models.BooleanField()

-----------------------------------------------------

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "/usr/lib/python2.5/site-packages/django/core/management/
__init__.py", line 340, in execute_manager
    utility.execute()
  File "/usr/lib/python2.5/site-packages/django/core/management/
__init__.py", line 295, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.5/site-packages/django/core/management/
base.py", line 77, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/python2.5/site-packages/django/core/management/
base.py", line 95, in execute
    self.validate()
  File "/usr/lib/python2.5/site-packages/django/core/management/
base.py", line 122, in validate
    num_errors = get_validation_errors(s, app)
  File "/usr/lib/python2.5/site-packages/django/core/management/
validation.py", line 28, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/usr/lib/python2.5/site-packages/django/db/models/loading.py",
line 128, in get_app_errors
    self._populate()
  File "/usr/lib/python2.5/site-packages/django/db/models/loading.py",
line 57, in _populate
    self.load_app(app_name, True)
  File "/usr/lib/python2.5/site-packages/django/db/models/loading.py",
line 72, in load_app
    mod = __import__(app_name, {}, {}, ['models'])
  File "/home/django/ipdb/../ipdb/nagios/models.py", line 15, in
<module>
    class APC(models.Model):
  File "/home/django/ipdb/../ipdb/nagios/models.py", line 22, in APC
    switch = models.ForeignKey(Switches)
NameError: name 'Switches' is not defined

----------------------------------------------------------

Basically, I'm putting together an IP address database that will
update our network monitor, Nagios.  I wanted to cover all my bases
and make it all-inclusive.  Each Switch is on a networked APC so I
want it foreign keyed to the APC it's on.  Each APC is networked and
so connected to one of the switches in the other model, so I want a
foreign key to the Switches model.  I need the foreign keys to set up
parenting in Nagios.

I've confirmed that this is definately related to the order the models
are placed in because reversing the order in models.py changes the
name error to complain about the opposite model.  Is there any way
around this that I'm missing in the documentation?  I suppose I can
remove the foreign key and just make one of them an integer field and
relate it manually.  It'd just be easier to make django handle the
table relations.  Any suggestions?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to