1 | Index: django/db/models/query.py |
---|
2 | =================================================================== |
---|
3 | --- django/db/models/query.py (revision 5061) |
---|
4 | +++ django/db/models/query.py (working copy) |
---|
5 | @@ -853,6 +853,13 @@ |
---|
6 | return None |
---|
7 | return matches[0] |
---|
8 | |
---|
9 | +def field_choices(field_list, related_query): |
---|
10 | + if related_query: |
---|
11 | + choices = [f.field.related_query_name() for f in field_list] |
---|
12 | + else: |
---|
13 | + choices = [f.name for f in field_list] |
---|
14 | + return choices |
---|
15 | + |
---|
16 | def lookup_inner(path, lookup_type, value, opts, table, column): |
---|
17 | qn = backend.quote_name |
---|
18 | joins, where, params = SortedDict(), [], [] |
---|
19 | @@ -937,7 +944,11 @@ |
---|
20 | except FieldFound: # Match found, loop has been shortcut. |
---|
21 | pass |
---|
22 | else: # No match found. |
---|
23 | - raise TypeError, "Cannot resolve keyword '%s' into field" % name |
---|
24 | + choices = field_choices(current_opts.many_to_many, False) + \ |
---|
25 | + field_choices(current_opts.get_all_related_many_to_many_objects(), True) + \ |
---|
26 | + field_choices(current_opts.get_all_related_objects(), True) + \ |
---|
27 | + field_choices(current_opts.fields, False) |
---|
28 | + raise TypeError, "Cannot resolve keyword '%s' into field, choices are: %s" % (name, ", ".join(choices)) |
---|
29 | |
---|
30 | # Check whether an intermediate join is required between current_table |
---|
31 | # and new_table. |
---|