Hi -

I have these models; with one custom manager.

class OrderByHighestScoreManager(models.Manager):
    def get_query_set(self, *args, **kwargs):
        qs = super(OrderByHighestValidationsManager,
self).get_query_set(*args, **kwargs)
        return
qs.annotate(score=Count('votes__id'),).order_by('score')

class AbstractEntry(models.Model):
    user = models.ForeignKey(User, null=True, blank=True)
    last_modified = models.DateTimeField(auto_now=True)
    objects = models.Manager()
    order_by_votes = OrderByHighestValidationsManager()

class Entry(AbstractEntry):
    creation_date = models.DateTimeField(auto_now_add=True)
    votes = generic.GenericRelation(Vote)
================================================

I can't get the custom manager to work....
This is OK:
Entry.objects.annotate(score=Count('votes__id'),).order_by('score')

This does not work:
Entry.order_by_votes.all()

The error I get is:
Error
Traceback (most recent call last):
  File "c:\Python27\Lib\unittest\case.py", line 318, in run
    testMethod()
  File "C:\Data\Development\django_projects\oko\________\apps\entries
\tests\model.py", line 111, in test_order_by_votes
    self.assertEqual(list(Entry.order_by_votes.values_list('id',
flat=True)), [self.e1.id, self.e2.id])
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\query.py", line 84, in __len__
    self._result_cache.extend(self._iter)
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\query.py", line 956, in iterator
    for row in self.query.get_compiler(self.db).results_iter():
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\compiler.py", line 680, in results_iter
    for rows in self.execute_sql(MULTI):
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\compiler.py", line 725, in execute_sql
    sql, params = self.as_sql()
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\compiler.py", line 60, in as_sql
    ordering, ordering_group_by = self.get_ordering()
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\compiler.py", line 349, in get_ordering
    self.query.model._meta, default_order=asc):
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\compiler.py", line 378, in find_ordering_name
    opts, alias, False)
  File "C:\Data\Development\django_projects\oko\lib\site-packages
\django\db\models\sql\query.py", line 1238, in setup_joins
    "Choices are: %s" % (name, ", ".join(names)))
FieldError: Cannot resolve keyword 'score' into field. Choices are:
creation_date, id, last_modified,  user, votes

=================================================================

What's going wrong here?

I would very much like to perform this sorting via a manager, or at
least a method accessible from within an Entry instance as several
templates will be using this special sorting (and I don't want to copy
this complex queryset over different views).

Thanks in advance!

-- 
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