python - Django foreign key count filter -


i have following 2 models:

class foo(models.model):     param1 = ...     param2 = ...     ...     paramn = ...  class bar(models.model):     foo = models.foreignkey(foo)     ...     ... 

goal: compute queryset of instances of foo such more 1 bar instance connected it

i have been looking solution , seems work else

foo.objects.annotate(num_bar=count('bar')).filter(num_bar__gt=1) 

this gave me fielderror saying 'bar' not possible field foo, tried 'bar_set' , got same error

is there chance implementing them wrong, or because old depreciated now? appreciated!

traceback

traceback (most recent call last):   file "<console>", line 1, in <module>   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/manager.py", line 127, in manager_method     return getattr(self.get_queryset(), name)(*args, **kwargs)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/query.py", line 794, in annotate     obj.query.add_annotation(annotation, alias, is_summary=false)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 982, in add_annotation     summarize=is_summary)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/aggregates.py", line 20, in resolve_expression     c = super(aggregate, self).resolve_expression(query, allow_joins, reuse, summarize)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/expressions.py", line 491, in resolve_expression     c.source_expressions[pos] = arg.resolve_expression(query, allow_joins, reuse, summarize, for_save)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/expressions.py", line 448, in resolve_expression     return query.resolve_ref(self.name, allow_joins, reuse, summarize)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1532, in resolve_ref     self.get_initial_alias(), reuse)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1471, in setup_joins     names, opts, allow_many, fail_on_missing=true)   file "/home/ryan/.virtualenvs/project/local/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1396, in names_to_path     "choices are: %s" % (name, ", ".join(available))) fielderror: cannot resolve keyword 'bar' field. choices are: param1, param2, param3, ..., paramn 

version

my django version 1.8.3

there can multiple reasons error, i'll try tell probable causes:

  1. recently upgrading django version may cause problem, clear migrations, rerun.
  2. moving local server production server can cause problem sometimes.
  3. your app name can cause problem, if starts "__".
  4. try other simpler queries, if work, try change query don't use num_model.
  5. also check if can count of them ( dirty way :) ):

    for foo in foo.objects.all(): if foo.bar_set.count() < 2: #do sth : foo.bar_set.get() or temp = temp + 1

as of short description of model (not main code), cannot find other causes. query should work.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -