On Thu, May 28, 2009 at 11:51 AM, enthropyinaction <
[email protected]> wrote:
>
> 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?
>
> >
>
Take a look at:
http://docs.djangoproject.com/en/dev/ref/models/fields/#lazy-relationshipswhich
explains how to do something like this.
Alex
--
"I disapprove of what you say, but I will defend to the death your right to
say it." --Voltaire
"The people's good is the highest law."--Cicero
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---