Code

Ticket #18098: order_wrt.diff

File order_wrt.diff, 1.2 KB (added by pressureman, 2 years ago)
Line 
1Index: django/db/models/base.py
2===================================================================
3--- django/db/models/base.py    (revision 17894)
4+++ django/db/models/base.py    (working copy)
5@@ -233,14 +233,20 @@
6             # defer creating accessors on the foreign class until we are
7             # certain it has been created
8             def make_foreign_order_accessors(field, model, cls):
9+                # Derive method name from related_name if defined (and if not
10+                # a self-join).
11+                if field.rel.to != cls and field.rel.related_name:
12+                    related_name = field.rel.related_name
13+                else:
14+                    related_name = cls.__name__.lower()
15                 setattr(
16                     field.rel.to,
17-                    'get_%s_order' % cls.__name__.lower(),
18+                    'get_%s_order' % related_name,
19                     curry(method_get_order, cls)
20                 )
21                 setattr(
22                     field.rel.to,
23-                    'set_%s_order' % cls.__name__.lower(),
24+                    'set_%s_order' % related_name,
25                     curry(method_set_order, cls)
26                 )
27             add_lazy_relation(