summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorBrian Rosner <brosner@gmail.com>2008-04-28 04:28:59 +0000
committerBrian Rosner <brosner@gmail.com>2008-04-28 04:28:59 +0000
commit738e6d986ba41ec5ef9ba5a600a333916f2e763d (patch)
tree7f6ab31d75a109d4267e22e30678f108bbbc1d71 /django
parent678b9a6f5a0dfdf571e6dc66ade5521314047deb (diff)
newforms-admin: Merged from trunk up to [7491].
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7492 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/views/main.py26
-rw-r--r--django/db/models/query.py1
-rw-r--r--django/db/models/sql/constants.py2
-rw-r--r--django/db/models/sql/subqueries.py3
4 files changed, 6 insertions, 26 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 1df046e561..254f202dd2 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -282,31 +282,9 @@ class ChangeList(object):
qs = qs.select_related()
break
- # Calculate lookup_order_field.
- # If the order-by field is a field with a relationship, order by the
- # value in the related table.
- lookup_order_field = self.order_field
- order_type = self.order_type == 'desc' and '-' or ''
- try:
- f = self.lookup_opts.get_field(self.order_field, many_to_many=False)
- except models.FieldDoesNotExist:
- pass
- else:
- if isinstance(f.rel, models.OneToOneRel):
- # For OneToOneFields, don't try to order by the related object's ordering criteria.
- pass
- elif isinstance(f.rel, models.ManyToOneRel):
- rel_ordering = f.rel.to._meta.ordering and f.rel.to._meta.ordering[0] or f.rel.to._meta.pk.column
- if rel_ordering[0] == '-':
- rel_ordering = rel_ordering[1:]
- order_type = not order_type and '-' or ''
- lookup_order_field = '%s.%s' % (f.rel.to._meta.db_table, rel_ordering)
- # FIXME: Must use select_related() becuase the lookup field may
- # be in a table not otherwise referenced yet.
- qs = qs.select_related()
-
# Set ordering.
- qs = qs.order_by(order_type + lookup_order_field)
+ if self.order_field:
+ qs = qs.order_by('%s%s' % ((self.order_type == 'desc' and '-' or ''), self.order_field))
# Apply keyword searches.
def construct_search(field_name):
diff --git a/django/db/models/query.py b/django/db/models/query.py
index e1e2bb19f2..3696181a5c 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -284,6 +284,7 @@ class QuerySet(object):
query = self.query.clone(sql.UpdateQuery)
query.add_update_values(kwargs)
query.execute_sql(None)
+ transaction.commit_unless_managed()
self._result_cache = None
update.alters_data = True
diff --git a/django/db/models/sql/constants.py b/django/db/models/sql/constants.py
index 3075817385..129a592b31 100644
--- a/django/db/models/sql/constants.py
+++ b/django/db/models/sql/constants.py
@@ -28,7 +28,7 @@ NULLABLE = 6
MULTI = 'multi'
SINGLE = 'single'
-ORDER_PATTERN = re.compile(r'\?|[-+]?\w+$')
+ORDER_PATTERN = re.compile(r'\?|[-+]?[.\w]+$')
ORDER_DIR = {
'ASC': ('ASC', 'DESC'),
'DESC': ('DESC', 'ASC')}
diff --git a/django/db/models/sql/subqueries.py b/django/db/models/sql/subqueries.py
index 382e6e94ff..1f9a13ecdc 100644
--- a/django/db/models/sql/subqueries.py
+++ b/django/db/models/sql/subqueries.py
@@ -95,7 +95,7 @@ class UpdateQuery(Query):
def _setup_query(self):
"""
- Runs on initialisation and after cloning. Any attributes that would
+ Runs on initialization and after cloning. Any attributes that would
normally be set in __init__ should go in here, instead, so that they
are also set up after a clone() call.
"""
@@ -349,6 +349,7 @@ class DateQuery(Query):
self.connection.ops.date_trunc_sql)
self.select = [select]
self.select_fields = [None]
+ self.select_related = False # See #7097.
self.distinct = True
self.order_by = order == 'ASC' and [1] or [-1]