Thursday, September 4, 2014

Re: Django admin list sort error

No one else? Strange...

The closest related issue I could find"out there" relates to the way that the MySQLdb cursor returns its results i.e. with the tablename prefixes stripped off.  So fields called 'name' or 'code' (that commonly appear in many tables) all now clash with each other.  

I tried one approach, which is to monkey patch in the use of connection.cursor(MySQLdb.cursors.DictCursor) but Django was not happy with that at all!  It clearly does not want a dictionary.

Any other suggestions or workarounds - short of my ensuring unique field names through out my database? (which is a fair amount of rework).

Thanks
Derek


On Saturday, 14 June 2014 18:44:52 UTC+2, Derek wrote:
I have recently discovered that Django admin is generating errors when trying to sort a table on certain fields: in particular, those fields that are ForeignKey linked to a separate table, each of which has a 'name' field.  Selecting any of these columns for a sort generates this error:

OperationalError at /admin/myapp/mytable/
(1060, "Duplicate column name 'name'")

A full stack trace is shown below.  I am working with MySQL 5.5 and Django 1.6.3.

Has anyone else encountered this error?  Is this a known bug and/or is there a workaround?

Thanks
Derek


Stack Trace:

Traceback:
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  139.                 response = response.render()
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/response.py" in render
  105.             self.content = self.rendered_content
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content
  82.         content = template.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  140.             return self._render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render_node
  854.         return node.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render_node
  854.         return node.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  123.         return compiled_parent._render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in _render
  134.         return self.nodelist.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render_node
  854.         return node.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render_node
  854.         return node.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render
  62.             result = block.nodelist.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  840.                 bit = self.render_node(node, context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render_node
  854.         return node.render(context)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/template/base.py" in render
  1196.                     _dict = func(*resolved_args, **resolved_kwargs)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in date_hierarchy
  312.                                                last=models.Max(field_name))
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/models/query.py" in aggregate
  278.         return query.get_aggregation(using=self.db)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/models/sql/query.py" in get_aggregation
  356.         result = query.get_compiler(using).execute_sql(SINGLE)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  786.         cursor.execute(sql, params)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute
  69.             return super(CursorDebugWrapper, self).execute(sql, params)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute
  53.                 return self.cursor.execute(sql, params)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/utils.py" in __exit__
  99.                 six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute
  53.                 return self.cursor.execute(sql, params)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py" in execute
  124.             return self.cursor.execute(query, args)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/MySQLdb/cursors.py" in execute
  201.             self.errorhandler(self, exc, value)
File "/home/derek/.virtualenvs/demo/local/lib/python2.7/site-packages/MySQLdb/connections.py" in defaulterrorhandler
  36.     raise errorclass, errorvalue

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/73820c1b-eb3b-4304-a673-82ece6f2316a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment