I guess the ModelForm must require the Meta class, sorry about that. This
is really strange behavior, but it looks like everything you've got is
correct.

Running syncdb will only create new databases/tables, it does not ALTER any
existing tables or modify any of the data. However, if you have other
models that don't have corresponding tables created, syncdb would create
those.

Furbee

On Fri, Nov 4, 2011 at 11:46 AM, Tabitha Samuel <tabitha.sam...@gmail.com>wrote:

> Yep, n_nics_groups and n_test_staff exist in the same 'gold'
> database.
>
> So when I tried:
> form = StaffForm(instance = Staff.objects.using('gold').raw("SELECT
> s.*, g.n_group_name FROM n_test_staff s LEFT JOIN n_nics_groups g
> ON(g.n_group_number = s.nics_group) WHERE s.username = 'tsamuel')"))
>    I got the error:
> 'QuerySet' object has no attribute 'raw'
>
> and when I tried:
> form = StaffForm(instance = Staff.objects.raw("SELECT s.*,
> g.n_group_name FROM n_test_staff s LEFT JOIN n_nics_groups g
> ON(g.n_group_number = s.nics_group) WHERE s.username =
> 'tsamuel')")).using('gold')
> 'RawQuerySet' object has no attribute '_meta'
>
> So here is one thing, both tables (n_test_staff and n_nics_groups)
> were pre-existing, meaning I have not created them using syncdb from
> the models. They're been used by other applications within my group.
> I've just created the models that would correspond to these tables, I
> have not run syncdb on the database. I am a little hesitant to do so,
> since I don't want to change the db values and mess up other
> applications.
>
> Tabitha
>
> On Nov 4, 2:28 pm, Furbee <furbeena...@gmail.com> wrote:
> > That is very strange... I recreated this on my development system and it
> > worked fine. I looked for Django bugs, but haven't found any related to
> > this issue. To be clear, the table n_nics_groups definitely exists in the
> > same database as n_test_staff, right? It does in mine because I used
> python
> > manage.py syncdb to create them from the models. If so, maybe we should
> try
> > to create a raw() query to see if the system has a bug creating the
> query.
> > This should be similar:
> >
> > form = StaffForm(instance = Staff.objects.raw("SELECT s.*, g.n_group_name
> > FROM n_test_staff s LEFT JOIN n_nics_groups g ON(g.n_group_number =
> > s.nics_group) WHERE s.username = 'tsamuel'))
> >
> > If that throws an error, we may have a problem in the DB layer.
> >
> > Thanks,
> >
> > Furbee
> >
> > On Fri, Nov 4, 2011 at 10:29 AM, Tabitha Samuel <
> tabitha.sam...@gmail.com>wrote:
> >
> >
> >
> >
> >
> >
> >
> > > The error that I'm getting is on the second form instantiation, that
> > > is on the line:
> >
> > > form = StaffForm(instance = Staff.objects.using('gold').get(username =
> > > current_staff)
> > > where current_staff='tsamuel' for instance
> >
> > > This is the traceback of the error that I get when I do a print form
> > > right after getting the form:
> > > Environment:
> >
> > > Request Method: GET
> > > Request URL:http://watermelon.nics.utk.edu:8004/staff/staffinfo
> >
> > > Django Version: 1.3.1
> > > Python Version: 2.6.2
> > > Installed Applications:
> > > ['django.contrib.auth',
> > >  'django.contrib.contenttypes',
> > >  'django.contrib.sessions',
> > >  'django.contrib.sites',
> > >  'gibbs.quartermaster',
> > >  'gibbs.userportal',
> > >  'gibbs.reports',
> > >  'gibbs.events',
> > >  'gibbs.job_stats',
> > >  'gibbs.simulator',
> > >  'gibbs.staff']
> > > Installed Middleware:
> > > ('django.contrib.csrf.middleware.CsrfViewMiddleware',
> > >  'django.middleware.common.CommonMiddleware',
> > >  'django.contrib.csrf.middleware.CsrfResponseMiddleware',
> > >  'django.contrib.sessions.middleware.SessionMiddleware',
> > >  'django.contrib.auth.middleware.AuthenticationMiddleware')
> >
> > > Traceback:
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > core/handlers/base.py" in get_response
> > >  111.                         response = callback(request,
> > > *callback_args, **callback_kwargs)
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > contrib/auth/decorators.py" in _wrapped_view
> > >  23.                 return view_func(request, *args, **kwargs)
> > > File "/nics/a/home/tsamuel/tssandbox/gibbs/utils/decorators.py" in
> > > decorate
> > >  11.         return view_func(request, *args, **kws)
> > > File "/nics/a/home/tsamuel/tssandbox/gibbs/../gibbs/staff/views.py" in
> > > staff_info
> > >  159.     print form
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > utils/encoding.py" in __str__
> > >  27.         return self.__unicode__().encode('utf-8')
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/forms.py" in __unicode__
> > >  95.         return self.as_table()
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/forms.py" in as_table
> > >  217.             errors_on_separate_row = False)
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/forms.py" in _html_output
> > >  180.                     'field': unicode(bf),
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/forms.py" in __unicode__
> > >  408.         return self.as_widget()
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/forms.py" in as_widget
> > >  439.         return widget.render(name, self.value(), attrs=attrs)
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/widgets.py" in render
> > >  516.         options = self.render_options(choices, [value])
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/widgets.py" in render_options
> > >  533.         for option_value, option_label in chain(self.choices,
> > > choices):
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/
> > > forms/models.py" in __iter__
> > >  882.             for obj in self.queryset.all():
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > models/query.py" in _result_iter
> > >  107.                 self._fill_cache()
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > models/query.py" in _fill_cache
> > >  772.
> > > self._result_cache.append(self._iter.next())
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > models/query.py" in iterator
> > >  273.         for row in compiler.results_iter():
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > models/sql/compiler.py" in results_iter
> > >  680.         for rows in self.execute_sql(MULTI):
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > models/sql/compiler.py" in execute_sql
> > >  735.         cursor.execute(sql, params)
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > backends/util.py" in execute
> > >  34.             return self.cursor.execute(sql, params)
> > > File "/nics/a/applications/gibbs/python/site-packages_django/django/db/
> > > backends/postgresql_psycopg2/base.py" in execute
> > >  44.             return self.cursor.execute(query, args)
> >
> > > Exception Type: DatabaseError at /staff/staffinfo
> > > Exception Value: relation "n_nics_groups" does not exist
> >
> > > Tabitha
> >
> > > On Nov 4, 11:31 am, Furbee <furbeena...@gmail.com> wrote:
> > > > Oh no, that would not be a good thing to share! :-) That's a bummer
> that
> > > > the upgrade broke things.
> >
> > > > So, the error is being raised on this line?
> > > > staff_form = StaffForm(request.POST,
> > > instance=staffinstance).using('gold')
> >
> > > > Furbee
> >
> > > > On Fri, Nov 4, 2011 at 8:02 AM, Tabitha Samuel <
> tabitha.sam...@gmail.com
> > > >wrote:
> >
> > > > > So this is how I'm creating the staff form:
> >
> > > > > def staff_info(request, *args, **kws):
> > > > >    class StaffForm(forms.ModelForm):
> > > > >        class Meta:
> > > > >          model= Staff
> > > > >          ....
> > > > >          ....
> > > > >          ....
> > > > >  if request.method == 'POST' and request.POST['event'] ==
> > > > > 'choosestaff':
> > > > > current_staff =
> > > > > request.POST.get('selectstaff')
> > > > > elif request.method == 'POST' and request.POST['event'] ==
> > > > > 'editstaff':
> > > > > #print
> > > > > request
> > > > > current_staff =
> > > > > request.POST.get('username')
> > > > > errors =
> > > > > validate_staff(request)
> > > > > if errors is not None and len(errors) ==
> > > > > 0:
> > > > > print
> > > > > request.POST
> > > > > staffinstance = Staff.objects.using('gold').get(username =
> > > > > current_staff)
> > > > > #new_form =
> > > > > StaffForm(instance=staffinstance)
> > > > > #print
> > > > > new_form
> > > > > staff_form = StaffForm(request.POST,
> > > > > instance=staffinstance).using('gold')
> > > > > staff_form.last_modification_time =
> > > > > datetime.now()
> > > > > staff_form.supervisor =
> > > > > staffinstance.supervisor
> > > > > staff_form.start_date =
> > > > > staffinstance.start_date
> > > > >            staff_form.creation_time =
> > > > > staffinstance.creation_time
> > > > >            staff_form.termination_date =
> > > > > staffinstance.termination_date
> > > > >           staff_form.using('gold').save()
> >
> > > > > else:
> > > > >        current_staff =
> > > > > request.user.username
> > > > >    tg_info,staff, nics_info =
> > > > > get_tg_info(current_staff)
> >
> > > > >    groups =
> > > > > NICSGroupType.objects.using('gold').all()
> > > > >     form = StaffForm(instance =
> > > > > Staff.objects.using('gold').select_related().get(username =
> > > > > current_staff))
> > > > >    print
> > > > > form
> > > > >    return render_to_response('staff/staffinfo.html',{'form':form,
> > > > > 'tginfo':tg_info, 'nicsinfo': nics_info, 'staff':staff,
> > > > > 'is_admin':is_admin, 'errors':errors},context_instance =
> > > > > RequestContext(request))
> >
> > > > > Funny thing is that this worked perfectly in version 1.1a of
> django.
> > > > > All trouble started when I switched to 1.3. I was using
> extDbManager
> > > > > to create the gold connection in the 1.1 version since 'gold' is a
> non-
> > > > > default db (used only for this model) and 1.1 only had in built
> > > > > support for a single db.
> >
> > > > > And yes, I do have a page for the view. Problem is that it is
> passcode
> > > > > protected and I don't think I'm at liberty to give you access to
> it. :
> > > > > (
> >
> > > > > Tabitha
> > > > > On Nov 4, 10:44 am, Mark Furbee <markfur...@gmail.com> wrote:
> > > > > > Good Morning Tabitha.
> >
> > > > > > 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.sam...@gmail.com
> > > > > >wrote:
> >
> > > > > > > Here is staff/models.py
> >
> > > > > > > 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)
> > > > > > >     def __str__(self):
> > > > > > >        return self.n_group_name
> > > > > > >     class Meta:
> > > > > > >        db_table = "n_nics_groups"
> >
> > > > > > > class StaffpageAdmin(models.Model):
> > > > > > >    n_id                        =
> models.IntegerField(primary_key =
> > > > > > > True)
> > > > > > >    n_username                  = models.CharField(max_length =
> 50)
> > > > > > >    class Meta:
> > > > > > >        db_table = 'n_staffpage_admin'
> >
> > > > > > > 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
> >
> > ...
> >
> > 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+unsubscr...@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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to