Re: order_by foreign key problem

2008-05-30 Thread Karen Tracey
On Fri, May 30, 2008 at 6:09 PM, robstar <[EMAIL PROTECTED]> wrote:

>
> Thanks for your help Richard..  taking out the select_related()
> results in the same problem.   Isn't a OnetoOneField just a fancy name
> wrapper for a foreign key??
>
> mysql> describe itemengine_gear;
> +-+--+--+-+-+---+
> | Field   | Type | Null | Key | Default | Extra |
> +-+--+--+-+-+---+
> | generic_info_id | int(11)  |  | PRI | 0   |   |
> +-+--+--+-+-+---+
>
> >>> gear = Gear.objects.order_by('-generic_info__hits')
> >>> print gear
> [snipped some]
> OperationalError: (1054, "Unknown column
> 'itemengine_gear.generic_info__hits' in 'order clause'")
>
> I can't believe I used this OnetoOne and populated a whole db around
> this model and it's broken.  Do you think this is a bug ?  Is there
> some way I can trick django and change the model to a regular foreign
> key without having to start everything over?
>
> Thanks.
>

It was a bug, ordering by foreign key fields was notoriously fragile before
queryset-refactor was merged into trunk.  I just tried your example on
current trunk and it works fine.  So I'd advise updating to a current SVN
checkout of Django.

Karen

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-30 Thread robstar

Thanks for your help Richard..  taking out the select_related()
results in the same problem.   Isn't a OnetoOneField just a fancy name
wrapper for a foreign key??

mysql> describe itemengine_gear;
+-+--+--+-+-+---+
| Field   | Type | Null | Key | Default | Extra |
+-+--+--+-+-+---+
| generic_info_id | int(11)  |  | PRI | 0   |   |
+-+--+--+-+-+---+

>>> gear = Gear.objects.order_by('-generic_info__hits')
>>> print gear
Traceback (most recent call last):
  File "", line 1, in ?
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 108, in __repr__
return repr(self._get_data())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 483, in _get_data
self._result_cache = list(self.iterator())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 189, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join(select) + sql, params)
  File "/usr/lib/python2.3/site-packages/django/db/backends/util.py",
line 18, in execute
return self.cursor.execute(sql, params)
  File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line
163, in execute
self.errorhandler(self, exc, value)
  File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
35, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1054, "Unknown column
'itemengine_gear.generic_info__hits' in 'order clause'")



I can't believe I used this OnetoOne and populated a whole db around
this model and it's broken.  Do you think this is a bug ?  Is there
some way I can trick django and change the model to a regular foreign
key without having to start everything over?

Thanks.




On May 29, 6:10 pm, "Richard Dahl" <[EMAIL PROTECTED]> wrote:
> I am not sure what is going on, however I wonder if it has something to do
> with the OneToOne relationship, I do not use onetoone myself but notice in
> the following from the db-api documentation:
>
> Note that the select_related() QuerySet method recursively prepopulates the
> cache of all one-to-many relationships ahead of time.
>
> Try to do it without the select_related to see if you can get the query to
> execute.  I know this will mean an additional hit on the db to access the
> related model, but I can't think of anything else.
>
> hth,
>
> -richard
>
> On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
>
>
> > Oops, I had the ' ' in there somewhere in all my different iterations
> > of trying to make this work .. so the query works, but I can't access
> > the object in the template, or from the shell for that matter.   Does
> > something change by doing this type of query?
>
> > On the shell:
>
> > >>> gear = Gear.objects.select_related().order_by('-generic_info__hits')
> > >>> print gear
>
> > Traceback (most recent call last):
> > File "", line 1, in ?
> > File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> > line 108, in __repr__
> >return repr(self._get_data())
> > File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> > line 483, in _get_data
> >self._result_cache = list(self.iterator())
> > File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> > line 189, in iterator
> >cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
> > + ",".join(select) + sql, params)
> > File "/usr/lib/python2.3/site-packages/django/db/backends/util.py",
> > line 18, in execute
> >return self.cursor.execute(sql, params)
> > File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line
> > 163, in execute
> >self.errorhandler(self, exc, value)
> > File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
> > 35, in defaulterrorhandler
> >raise errorclass, errorvalue
> > OperationalError: (1054, "Unknown column
> > 'itemengine_gear.generic_info__hits' in 'order clause'")
>
> >    The template chokes the same way trying to access the object...
> > I shouldn't have to change my code?
>
> > rob
>
> > On May 29, 4:16 pm, "Richard Dahl" <[EMAIL PROTECTED]> wrote:
> > >http://www.djangoproject.com/documentation/db-api/
> > > contains the info you want.  Try this:
> > > Gear.objects.select_related().order_by('generic_info__hits')
>
> > > you could also set the order_by in the Meta of Item to hits and then you
> > > could just do:
> > > Gear.objects.select_related().order_by('generic_info')
>
> > > hth,
> > > -richard
>
> > > On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
> > > > Hey guys,
>
> > > > I read through some of the threads here, but still can't get this
> > > > simple scenario to work..
>
> > > > DB name: gcdb
>
> > > > class Item(models.Model):
> > > >   hits= models.IntegerField(default=0)
>
> > > > class Gear(models.Model):
> > > > generic_info= models.OneToOneField(Item)
>
> > > > Should this work

Re: order_by foreign key problem

2008-05-29 Thread Johannes Dollinger

Wah, nevermind ..

Am 30.05.2008 um 01:27 schrieb Johannes Dollinger:

>
>> Should this work??
>>
>>   results = Gear.objects.select_related().order_by 
>> (generic_info__hits)
>
> Quotes are missing:
>
> Gear.objects.select_related().order_by('generic_info__hits')
>
>
>
>
>
> >



--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-29 Thread Johannes Dollinger

> Should this work??
>
>   results = Gear.objects.select_related().order_by(generic_info__hits)

Quotes are missing:

Gear.objects.select_related().order_by('generic_info__hits')





--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-29 Thread Richard Dahl
I am not sure what is going on, however I wonder if it has something to do
with the OneToOne relationship, I do not use onetoone myself but notice in
the following from the db-api documentation:

Note that the select_related() QuerySet method recursively prepopulates the
cache of all one-to-many relationships ahead of time.

Try to do it without the select_related to see if you can get the query to
execute.  I know this will mean an additional hit on the db to access the
related model, but I can't think of anything else.

hth,

-richard



On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
>
> Oops, I had the ' ' in there somewhere in all my different iterations
> of trying to make this work .. so the query works, but I can't access
> the object in the template, or from the shell for that matter.   Does
> something change by doing this type of query?
>
> On the shell:
>
> >>> gear = Gear.objects.select_related().order_by('-generic_info__hits')
> >>> print gear
>
> Traceback (most recent call last):
> File "", line 1, in ?
> File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> line 108, in __repr__
>return repr(self._get_data())
> File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> line 483, in _get_data
>self._result_cache = list(self.iterator())
> File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
> line 189, in iterator
>cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
> + ",".join(select) + sql, params)
> File "/usr/lib/python2.3/site-packages/django/db/backends/util.py",
> line 18, in execute
>return self.cursor.execute(sql, params)
> File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line
> 163, in execute
>self.errorhandler(self, exc, value)
> File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
> 35, in defaulterrorhandler
>raise errorclass, errorvalue
> OperationalError: (1054, "Unknown column
> 'itemengine_gear.generic_info__hits' in 'order clause'")
>
>    The template chokes the same way trying to access the object...
> I shouldn't have to change my code?
>
> rob
>
> On May 29, 4:16 pm, "Richard Dahl" <[EMAIL PROTECTED]> wrote:
> > http://www.djangoproject.com/documentation/db-api/
> > contains the info you want.  Try this:
> > Gear.objects.select_related().order_by('generic_info__hits')
> >
> > you could also set the order_by in the Meta of Item to hits and then you
> > could just do:
> > Gear.objects.select_related().order_by('generic_info')
> >
> > hth,
> > -richard
> >
> > On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > > Hey guys,
> >
> > > I read through some of the threads here, but still can't get this
> > > simple scenario to work..
> >
> > > DB name: gcdb
> >
> > > class Item(models.Model):
> > >   hits= models.IntegerField(default=0)
> >
> > > class Gear(models.Model):
> > > generic_info= models.OneToOneField(Item)
> >
> > > Should this work??
> >
> > > results = Gear.objects.select_related().order_by(generic_info__hits)
> >
> > > I also tried putting the db name in there like I saw in some old
> > > examples:
> >
> > > results =
> > > Gear.objects.select_related().order_by(gcdb_generic_info__hits)
> >
> > > Both result in the field not being found..  Any ideas???  thanks!
> >
> > > rob
> >
>

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-29 Thread robstar

Oops, I had the ' ' in there somewhere in all my different iterations
of trying to make this work .. so the query works, but I can't access
the object in the template, or from the shell for that matter.   Does
something change by doing this type of query?

On the shell:

>>> gear = Gear.objects.select_related().order_by('-generic_info__hits')
>>> print gear

Traceback (most recent call last):
  File "", line 1, in ?
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 108, in __repr__
return repr(self._get_data())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 483, in _get_data
self._result_cache = list(self.iterator())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 189, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join(select) + sql, params)
  File "/usr/lib/python2.3/site-packages/django/db/backends/util.py",
line 18, in execute
return self.cursor.execute(sql, params)
  File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line
163, in execute
self.errorhandler(self, exc, value)
  File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
35, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1054, "Unknown column
'itemengine_gear.generic_info__hits' in 'order clause'")

   The template chokes the same way trying to access the object...
I shouldn't have to change my code?

rob

On May 29, 4:16 pm, "Richard Dahl" <[EMAIL PROTECTED]> wrote:
> http://www.djangoproject.com/documentation/db-api/
> contains the info you want.  Try this:
> Gear.objects.select_related().order_by('generic_info__hits')
>
> you could also set the order_by in the Meta of Item to hits and then you
> could just do:
> Gear.objects.select_related().order_by('generic_info')
>
> hth,
> -richard
>
> On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hey guys,
>
> > I read through some of the threads here, but still can't get this
> > simple scenario to work..
>
> > DB name: gcdb
>
> > class Item(models.Model):
> >   hits= models.IntegerField(default=0)
>
> > class Gear(models.Model):
> > generic_info= models.OneToOneField(Item)
>
> > Should this work??
>
> > results = Gear.objects.select_related().order_by(generic_info__hits)
>
> > I also tried putting the db name in there like I saw in some old
> > examples:
>
> > results =
> > Gear.objects.select_related().order_by(gcdb_generic_info__hits)
>
> > Both result in the field not being found..  Any ideas???  thanks!
>
> > rob
--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-29 Thread robstar

Oops, I had the ' ' in there somewhere in all my different iterations
of trying to make this work .. so the query works, but I can't access
the object in the template, or from the shell for that matter.   Does
something change by doing this type of query?

On the shell:

>>> gear = Gear.objects.select_related().order_by('-generic_info__hits')
>>> print gear
Traceback (most recent call last):
  File "", line 1, in ?
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 108, in __repr__
return repr(self._get_data())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 483, in _get_data
self._result_cache = list(self.iterator())
  File "/usr/lib/python2.3/site-packages/django/db/models/query.py",
line 189, in iterator
cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "")
+ ",".join(select) + sql, params)
  File "/usr/lib/python2.3/site-packages/django/db/backends/util.py",
line 18, in execute
return self.cursor.execute(sql, params)
  File "/usr/lib/python2.3/site-packages/MySQLdb/cursors.py", line
163, in execute
self.errorhandler(self, exc, value)
  File "/usr/lib/python2.3/site-packages/MySQLdb/connections.py", line
35, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1054, "Unknown column
'itemengine_knives.generic_info__hits' in 'order clause'")


   The template chokes the same way trying to access the object...
I shouldn't have to change my code?

rob





On May 29, 4:16 pm, "Richard Dahl" <[EMAIL PROTECTED]> wrote:
> http://www.djangoproject.com/documentation/db-api/
> contains the info you want.  Try this:
> Gear.objects.select_related().order_by('generic_info__hits')
>
> you could also set the order_by in the Meta of Item to hits and then you
> could just do:
> Gear.objects.select_related().order_by('generic_info')
>
> hth,
> -richard
>
> On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
>
>
> > Hey guys,
>
> > I read through some of the threads here, but still can't get this
> > simple scenario to work..
>
> > DB name: gcdb
>
> > class Item(models.Model):
> >   hits= models.IntegerField(default=0)
>
> > class Gear(models.Model):
> > generic_info= models.OneToOneField(Item)
>
> > Should this work??
>
> > results = Gear.objects.select_related().order_by(generic_info__hits)
>
> > I also tried putting the db name in there like I saw in some old
> > examples:
>
> > results =
> > Gear.objects.select_related().order_by(gcdb_generic_info__hits)
>
> > Both result in the field not being found..  Any ideas???  thanks!
>
> > rob
--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



Re: order_by foreign key problem

2008-05-29 Thread Richard Dahl
http://www.djangoproject.com/documentation/db-api/
contains the info you want.  Try this:
Gear.objects.select_related().order_by('generic_info__hits')

you could also set the order_by in the Meta of Item to hits and then you
could just do:
Gear.objects.select_related().order_by('generic_info')


hth,
-richard


On 5/29/08, robstar <[EMAIL PROTECTED]> wrote:
>
>
> Hey guys,
>
> I read through some of the threads here, but still can't get this
> simple scenario to work..
>
> DB name: gcdb
>
> class Item(models.Model):
>   hits= models.IntegerField(default=0)
>
> class Gear(models.Model):
> generic_info= models.OneToOneField(Item)
>
>
> Should this work??
>
> results = Gear.objects.select_related().order_by(generic_info__hits)
>
> I also tried putting the db name in there like I saw in some old
> examples:
>
> results =
> Gear.objects.select_related().order_by(gcdb_generic_info__hits)
>
>
> Both result in the field not being found..  Any ideas???  thanks!
>
> rob
>
> >
>

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---



order_by foreign key problem

2008-05-29 Thread robstar

Hey guys,

I read through some of the threads here, but still can't get this
simple scenario to work..

DB name: gcdb

class Item(models.Model):
   hits= models.IntegerField(default=0)

class Gear(models.Model):
  generic_info= models.OneToOneField(Item)


Should this work??

  results = Gear.objects.select_related().order_by(generic_info__hits)

I also tried putting the db name in there like I saw in some old
examples:

  results =
Gear.objects.select_related().order_by(gcdb_generic_info__hits)


Both result in the field not being found..  Any ideas???  thanks!

rob

--~--~-~--~~~---~--~~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~--~~~~--~~--~--~---