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