#13241: order_with_respect_to fails on a relationship on a model that has not
yet
been defined
---------------------------------------------------+------------------------
Reporter: Goldan | Owner: nobody
Status: new | Milestone:
Component: Database layer (models, ORM) | Version: SVN
Resolution: | Keywords:
order_with_respect_to
Stage: Unreviewed | Has_patch: 0
Needs_docs: 0 | Needs_tests: 0
Needs_better_patch: 0 |
---------------------------------------------------+------------------------
Changes (by ramiro):
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Old description:
> If I specify 'order_with_respect_to' on a field linked to a model that
> hasn't been defined yet, I get the following error:
> <...>File "/usr/lib/python2.6/dist-packages/django/db/models/base.py",
> line 223, in _prepare
> setattr(opts.order_with_respect_to.rel.to, 'get_%s_order' %
> cls.__name__.lower(), curry(method_get_order, cls))
> AttributeError: 'str' object has no attribute 'get_location_order'
>
> When I swap declarations of Location and City models, the error
> disappears.
>
> Here is the code:
>
> class Location(TimeStampedModel):
> '''Single location on a map, e.g. building.'''
> address = models.CharField(u"адрес", max_length=75,
> help_text=u"Улица, корпус, дом")
> city = models.ForeignKey('City', related_name="locations",
> verbose_name=u"город")
> metro_stations = models.ManyToManyField('MetroStation',
> related_name="locations", verbose_name=u"ближайшие станции метро",
> blank=True, null=True)
>
> class Meta:
> verbose_name = u"адрес"
> verbose_name_plural = u"адреса"
> order_with_respect_to = 'city'
>
> class City(TimeStampedModel):
> '''A city.'''
> name = models.CharField(u"название", max_length=30)
>
> class Meta:
> verbose_name = u"город"
> verbose_name_plural = u"города"
New description:
If I specify 'order_with_respect_to' on a field linked to a model that
hasn't been defined yet, I get the following error:
{{{
<...>File "/usr/lib/python2.6/dist-packages/django/db/models/base.py",
line 223, in _prepare
setattr(opts.order_with_respect_to.rel.to, 'get_%s_order' %
cls.__name__.lower(), curry(method_get_order, cls))
AttributeError: 'str' object has no attribute 'get_location_order'
}}}
When I swap declarations of Location and City models, the error
disappears.
Here is the code:
{{{
class Location(TimeStampedModel):
'''Single location on a map, e.g. building.'''
address = models.CharField(u"адрес", max_length=75, help_text=u"Улица,
корпус, дом")
city = models.ForeignKey('City', related_name="locations",
verbose_name=u"город")
metro_stations = models.ManyToManyField('MetroStation',
related_name="locations", verbose_name=u"ближайшие станции метро",
blank=True, null=True)
class Meta:
verbose_name = u"адрес"
verbose_name_plural = u"адреса"
order_with_respect_to = 'city'
class City(TimeStampedModel):
'''A city.'''
name = models.CharField(u"название", max_length=30)
class Meta:
verbose_name = u"город"
verbose_name_plural = u"города"
}}}
Comment:
(reformatted description, please use the 'Preview' button)
--
Ticket URL: <http://code.djangoproject.com/ticket/13241#comment:1>
Django <http://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" 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-updates?hl=en.