Actually, do you have a model for StaffForm? That is the object being instantiated and then causing the error. If there is no nics group reference field in the StaffForm object, it may raise this error. Also, do you have this running in a view/template? Do you have a real page that you've tried this on, or have you just tried it in the shell?
Thanks,
Furbee
-- On Fri, Nov 4, 2011 at 7:02 AM, Tabitha Samuel <tabitha.samuel@gmail.com> wrote:
Here is staff/models.py
def __str__(self):
from django.db import models
class NICSGroupType(models.Model):
n_group_number = models.IntegerField(primary_key = True)
n_group_name = models.CharField(max_length = 512)
return self.n_group_name
class Meta:class StaffpageAdmin(models.Model):
db_table = "n_nics_groups"
n_id = models.IntegerField(primary_key =
True)
n_username = models.CharField(max_length = 50)
class Meta:
db_table = 'n_staffpage_admin'
to_field="n_group_number",db_column="nics_group",
class Staff(models.Model):
username = models.CharField(primary_key = True,
max_length = 50)
home_phone = models.CharField(max_length = 12,
null=True)
cell_phone = models.CharField(max_length = 12,
null = True)
home_address = models.CharField(max_length = 1024,
null = True)
home_city = models.CharField(max_length = 64,
null = True)
home_state = models.CharField(max_length = 32,
null = True)
home_zip = models.CharField(max_length = 10,
null = True)
emergency_name = models.CharField(max_length =64,
null = True)
emergency_phone = models.CharField(max_length = 12,
null = True)
nics_group = models.ForeignKey(NICSGroupType,
class TG_Staff(models.Model):null=True,blank=True)
room_number = models.CharField(max_length = 32,
null = True)
title = models.CharField(max_length = 64)
supervisor = models.CharField(max_length = 25,
null = True, blank = True)
url = models.CharField(max_length =
256,null = True, blank = True)
im = models.CharField(max_length = 32,
null = True, blank=True)
last_modification_time = models.IntegerField()
start_date = models.IntegerField()
creation_time = models.IntegerField()
termination_date = models.IntegerField(null = True,
blank = True)
bio = models.TextField()
photopath = models.CharField(max_length = 5048)
office_phone = models.CharField(max_length=12)
email = models.CharField(max_length = 256)
preferred_name = models.CharField(max_length = 50,
null = True, blank = True)
deleted = models.BooleanField(default = False)
viewable = models.BooleanField(default = True)
class Meta:
db_table = "n_test_staff"
g_name = models.CharField(primary_key = True,
max_length = 1024)
g_modification_time = models.IntegerField()
g_active = models.CharField(max_length = 5)
g_common_name = models.CharField(max_length = 1024)
g_phone_number = models.CharField(max_length = 1024)
g_default_project = models.CharField(max_length = 1024)
g_office_address = models.CharField(max_length = 1024)
g_bz_phone = models.CharField(max_length = 1024)
g_bz_phone_ext = models.CharField(max_length = 1024)
g_citizenship = models.CharField(max_length = 1024)
g_street_address = models.CharField(max_length = 1024)
g_street_address2 = models.CharField(max_length = 1024)
g_city = models.CharField(max_length = 1024)
g_state = models.CharField(max_length = 1024)
g_zip = models.CharField(max_length = 1024)
g_country = models.CharField(max_length = 1024)
g_dept = models.CharField(max_length = 1024)
g_tg_person_id = models.CharField(max_length = 1024)
g_org = models.CharField(max_length = 1024)
g_position = models.CharField(max_length = 1024)
g_home_phone = models.CharField(max_length = 1024)
g_fax = models.CharField(max_length = 1024)
g_ldap_id = models.IntegerField()
g_email_address = models.CharField(max_length = 1024)
class Meta:
db_table = "g_user"
Is this what you needed?
Tabitha
> On Thu, Nov 3, 2011 at 7:22 PM, Tabitha Samuel <tabitha.sam...@gmail.com>wrote:
On Nov 4, 2:00 am, Furbee <Furbeena...@gmail.com> wrote:
> Hi Tabitha,
>
> I wish I could supply a quick and simple answer to fix what's going on in
> your database, but nothing obvious is standing out. Can you supply your
> model for StaffForm? That seems to be where the problem lies, since we can
> get details from the model and view elsewhere.
>
> Thanks,
>
> Furbee
>
> ...>
>
>
>
>
>
>
> > K, so that worked...
>
> > This is what I got:
> > In [5]: i = Staff.objects.using('gold').get(username='tsamuel')
>
> > In [6]: i.nics_group.n_group_name
> > Out[6]: u'Systems and Operations'
>
> > Looks like the foreign key is working fine from the db's perspective.
> > This is how I'm getting the form:
> > form = StaffForm(instance = Staff.objects.using('gold').get(username
> > =current_staff))
> > where current_staff = 'tsamuel'
> > and then if I do a print form, I get a relation n_nics_groups does not
> > exist error.
>
> > Once again, thank you so much for your help, I really appreciate it!
>
> > Tabitha
>
> > On Nov 3, 1:26 pm, Furbee <Furbeena...@gmail.com> wrote:
> > > I may have lead you astray. I set up the same models on my end and get
> > the
> > > same query; it didn't show the join of the foreign key in the QuerySet of
> > > Staff, but when I did a get() on username='tsamuel' I got a Staff object.
> > > Then I was able to get the group they belonged to. This was successful
> > for
> > > me:
>
> > > Here's my data:
>
> > > table: n_nics_groups
> > > n_group_number; n_group_name
> > > 1; "TestGroup1"
> > > 2; "TestGroup2"
> > > 3; "TestGroup3"
>
> > > table: n_test_staff
>
> > "tfigura";"";"";"";"";"";"";"";"";2;"";"''";"";"";"";1;1;1;;"''";"''";"''";"''";"";FALSE;TRUE
>
> > "tsamuel";"";"";"";"";"";"";"";"";1;"";"''";"";"";"";1;1;1;;"''";"''";"''";"''";"''";FALSE;TRUE
>
> > > 'tfigura' is in group with n_group_number 2, tsamuel is in group with
> > > n_group_number 1.
>
> > > python manage.py shell:
>
> > > >>> from project.models import NICSGroupType, Staff
> > > >>> i = Staff.objects.get(username='tsamuel')
> > > >>> i.nics_group.n_group_name
> > > >>> u'TestGroup1'
>
> > > Is this operational for your instance? If not, I would double check that
> > > the n_nics_groups table definitely exists in the datasource you defined
> > as
> > > 'gold.' This should be defined in the DATABASES section of settings.py.
> > It
> > > looks like it is the database 'public' from your example, but double
> > check
> > > that the 'gold' DATABASE points there.
>
> > > Otherwise, I wonder if it is somewhere where you are defining the form
> > > object. First, let's verify that the foreign key reference is being
> > honored
> > > on your system, by running the above test, to verify that the group is
> > > printed, when you get() a specific record and print the
> > > nics_group.n_group_name.
>
> > > Thanks,
>
> > > Furbee
>
> > > On Wed, Nov 2, 2011 at 5:09 PM, Tabitha Samuel <tabitha.sam...@gmail.com>wrote:>
> > Thank you so much for your reply! So I got a "Staff object has no
> > > > attribute 'query'" error when I did it with the get. I got the sql
> > > > when I tried it with the filter instead (instance =
> > > > Staff.objects.using('gold').filter(username='tsamuel') >>
> > > > str(instance.query))this is what I'm getting:
>
> > > > 'SELECT "n_test_staff"."username", "n_test_staff"."home_phone",
> > > > "n_test_staff"."cell_phone", "n_test_staff"."home_address",
> > > > "n_test_staff"."home_city", "n_test_staff"."home_state",
> > > > "n_test_staff"."home_zip", "n_test_staff"."emergency_name",
> > > > "n_test_staff"."emergency_phone", "n_test_staff"."nics_group",
> > > > "n_test_staff"."room_number", "n_test_staff"."title",
> > > > "n_test_staff"."supervisor", "n_test_staff"."url",
> > > > "n_test_staff"."im", "n_test_staff"."last_modification_time",
> > > > "n_test_staff"."start_date", "n_test_staff"."creation_time",
> > > > "n_test_staff"."termination_date", "n_test_staff"."bio",
> > > > "n_test_staff"."photopath", "n_test_staff"."office_phone",
> > > > "n_test_staff"."email", "n_test_staff"."preferred_name",
> > > > "n_test_staff"."deleted", "n_test_staff"."viewable" FROM
> > > > "n_test_staff" WHERE "n_test_staff"."username" = tsamuel '
>
> > > > Looks like from the query, is not looking into the n_nics_groups
> > > > table. Question is why?
>
> > > > Tabitha
>
> > > > On Nov 2, 6:00 pm, Furbee <Furbeena...@gmail.com> wrote:
> > > > > Can you try this and tell us what you see:
>
> > > > > Run a shell using python manage.py shell
>
> > > > > >>> instance = Staff.objects.using('gold').get(username='tsamuel')
> > > > > >>> str(instance.query)
>
> > > > > This will tell us whether or not the database, reference, and such
> > are
> > > > > correctly translating into a query. The error means Django is
> > sending an
> > > > > erroneous query to your database layer.
>
> > > > > Furbeenator
>
> > > > > On Wed, Nov 2, 2011 at 1:54 PM, Tabitha Samuel <
> > tabitha.sam...@gmail.com
> > > > >wrote:
>
> > > > > > Hi,
>
> > > > > > In brief here is my problem. I have two simple tables, one has a
> > one
> > > > > > to many relation with the other. The problem I run into is that
> > when I
> > > > > > try to create a form instance of the child, and try to print it or
> > > > > > render it in a template, I run into a "relation not found" error
> > for
> > > > > > the parent. Simply querying the parent works without a problem.
>
> > > > > > This is what my models.py looks like:
> > > > > > from django.db import models
>
> > > > > > class NICSGroupType(models.Model):
> > > > > > n_group_number = models.IntegerField(primary_key = True)
> > > > > > n_group_name = models.CharField(max_length = 512)
> > > > > > class Meta:
> > > > > > db_table = "n_nics_groups"
>
> > > > > > class Staff(models.Model):
> > > > > > username = models.CharField(primary_key =
> > True,
> > > > > > max_length = 50)
> > > > > > home_phone = models.CharField(max_length = 12,
> > > > > > null=True)
> > > > > > cell_phone = models.CharField(max_length = 12,
> > > > > > null = True)
> > > > > > home_address = models.CharField(max_length =
> > 1024,
> > > > > > null = True)
> > > > > > home_city = models.CharField(max_length = 64,
> > > > > > null = True)
> > > > > > home_state = models.CharField(max_length = 32,
> > > > > > null = True)
> > > > > > home_zip = models.CharField(max_length = 10,
> > > > > > null = True)
> > > > > > emergency_name = models.CharField(max_length =64,
> > > > > > null = True)
> > > > > > emergency_phone = models.CharField(max_length = 12,
> > > > > > null = True)
> > > > > > nics_group = models.ForeignKey(NICSGroupType,
> > > > > > to_field ='n_group_number', db_column="nics_group",
> > > > > > null=True,blank=True)
> > > > > > room_number = models.CharField(max_length = 32,
> > > > > > null = True)
> > > > > > title = models.CharField(max_length = 64)
> > > > > > supervisor = models.CharField(max_length = 25,
> > > > > > null = True, blank = True)
> > > > > > url = models.CharField(max_length =
> > > > > > 256,null = True, blank = True)
> > > > > > im = models.CharField(max_length = 32,
> > > > > > null = True, blank=True)
> > > > > > last_modification_time = models.IntegerField()
> > > > > > start_date = models.IntegerField()
> > > > > > creation_time = models.IntegerField()
> > > > > > termination_date = models.IntegerField(null = True,
> > > > > > blank = True)
> > > > > > bio = models.TextField()
> > > > > > photopath = models.CharField(max_length =
> > 5048)
> > > > > > office_phone = models.CharField(max_length=12)
> > > > > > email = models.CharField(max_length = 256)
> > > > > > preferred_name = models.CharField(max_length = 50,
> > > > > > null = True, blank = True)
> > > > > > deleted = models.BooleanField(default =
> > False)
> > > > > > viewable = models.BooleanField(default =
> > True)
>
> > > > > > class Meta:
> > > > > > db_table = "n_test_staff"
>
> > > > > > The tables that it corresponds to looks like this:
>
> > > > > > \d n_test_staff
> > > > > > Table "public.n_test_staff"
> > > > > > Column | Type | Modifiers
> > > > > > ------------------------+------------------------+-----------
> > > > > > username | character varying(25) |
> > > > > > home_phone | character varying(12) |
> > > > > > cell_phone | character varying(12) |
> > > > > > home_address | character varying(256) |
> > > > > > home_city | character varying(64) |
> > > > > > home_state | character varying(32) |
> > > > > > home_zip | character varying(10) |
> > > > > > emergency_name | character varying(64) |
> > > > > > emergency_phone | character varying(12) |
> > > > > > nics_group | integer |
> > > > > > room_number | character varying(32) |
> > > > > > title | character varying(64) |
> > > > > > supervisor | character varying(25) |
> > > > > > url | character varying(256) |
> > > > > > im | character varying(32) |
> > > > > > last_modification_time | integer |
> > > > > > start_date | integer |
> > > > > > creation_time | integer |
> > > > > > termination_date | integer |
> > > > > > bio | text |
> > > > > > photopath | text |
> > > > > > office_phone | character varying(12) |
> > > > > > email | text |
> > > > > > preferred_name | character varying(50) |
> > > > > > deleted | boolean |
> > > > > > viewable
>
>
> read more »
--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment