I am getting the following error:
OperationalError at /lista/
(1241, 'Operand should contain 1 column(s)')
Request Method: POST
Request URL:
http://127.0.0.1:8000/lista/
Exception Type: OperationalError
Exception Value: (1241, 'Operand should contain 1 column(s)')
Exception Location: C:\Python24\Lib\site-packages\MySQLdb
\connections.py in defaulterrorhandler, line 35
Looking through the traceback, the error seems to happen in line 18
here:
C:\Python24\lib\site-packages\django\db\backends\util.py in execute
12. self.cursor = cursor
13. self.db = db # Instance of a BaseDatabaseWrapper subclass
14.
15. def execute(self, sql, params=()):
16. start = time()
17. try:
18. return self.cursor.execute(sql, params) ...
19. finally:
20. stop = time()
21. sql = self.db.ops.last_executed_query(self.cursor, sql, params)
22. self.db.queries.append({
23. 'sql': sql,
24. 'time': "%.3f" % (stop - start),
with:
sql =
u"SELECT DISTINCT
`revistas_articulo`.`id`,`revistas_articulo`.`visible`,`revistas_articulo`.`revista_id`,`revistas_articulo`.`pais`,`revistas_articulo`.`ciudad`,`revistas_articulo`.`titulo`,`revistas_articulo`.`volumen`,`revistas_articulo`.`numero`,`revistas_articulo`.`mes`,`revistas_articulo`.`ano`,`revistas_articulo`.`paginas`,`revistas_articulo`.`categoria`,`revistas_articulo`.`contenido`,`revistas_articulo`.`notas`,`revistas_articulo`.`idioma`,`revistas_articulo`.`descripcion`,`revistas_articulo`.`foto`,`revistas_articulo`.`ilustracion`,`revistas_articulo`.`link`,`revistas_articulo`.`fecha_creacion`,`revistas_articulo`.`fecha_modificacion`,`revistas_articulo`.`imagen`
FROM `revistas_articulo` LEFT OUTER JOIN `revistas_articulo_autores`
AS `m2m_revistas_articulo__autores` ON `revistas_articulo`.`id` =
`m2m_revistas_articulo__autores`.`articulo_id` INNER JOIN
`revistas_autor` AS `revistas_articulo__autores` ON
`m2m_revistas_articulo__autores`.`autor_id` =
`revistas_articulo__autores`.`id` INNER JOIN `revistas_revista` AS
`revistas_articulo__revista` ON `revistas_articulo`.`revista_id` =
`revistas_articulo__revista`.`id` WHERE ((`revistas_articulo`.`titulo`
LIKE %del% OR `revistas_articulo__autores`.`nombre` LIKE %del% OR
`revistas_articulo__autores`.`apellido` LIKE %del% OR
`revistas_articulo__revista`.`nombre` LIKE %del%) AND
`revistas_articulo`.`pais` = [u'Bolivia', u'Chile', u'Colombia',
u'Costa Rica', u'Cuba', u'Ecuador', u'El Salvador', u'Espa\\xf1a',
u'Guatemala', u'Honduras', u'M\\xe9xico', u'Nicaragua', u'Panam\\xe1']
AND `revistas_articulo`.`revista_id` = [u'Arquitectura',
u'Arquitectura y construccion', u'ARQUITECTURA- Colegio Nacional de
Arquitectos CUBA'] AND `revistas_articulo`.`categoria` = [u'Articulo -
noticia', u'Catalogo de materiales', u'Critica', u'Nota biografica',
u'Nota necrologica', u'Noticia', u'Reportaje fotografico', u'Resena
bibliografica', u'Resena de obra'])"
and
params = [u'%del%', u'%del%', u'%del%', u'%del%', [u'Bolivia',
u'Chile', u'Colombia', u'Costa Rica', u'Cuba', u'Ecuador', u'El
Salvador', u'Espa\xf1a', u'Guatemala', u'Honduras', u'M\xe9xico',
u'Nicaragua', u'Panam\xe1'], [u'Arquitectura', u'Arquitectura y
construccion', u'ARQUITECTURA- Colegio Nacional de Arquitectos CUBA'],
[u'Articulo - noticia', u'Catalogo de materiales', u'Critica', u'Nota
biografica', u'Nota necrologica', u'Noticia', u'Reportaje
fotografico', u'Resena bibliografica', u'Resena de obra']]
The error is triggered by the second-to-last 'if results:" line in my
views.py:
from django.db.models import Q
from django.shortcuts import render_to_response
from models import Articulo, Revista, choice_categoria
from forms import ListForm
def lista(request):
if request.method == 'POST':
form = ListForm(request.POST)
if form.is_valid():
data = form.cleaned_data
query = data['query']
ano_min = data['ano_min']
ano_max = data['ano_max']
pais = data['pais']
revista = data['revista']
categoria = data['categoria']
orderby = data['orderby']
results = Articulo.objects.all()
if query:
qset = (
Q(titulo__icontains=query) |
Q(autores__nombre__icontains=query) |
Q(autores__apellido__icontains=query) |
Q(revista__nombre__icontains=query)
)
results = results.filter(qset).distinct()
if ano_min:
results = results.filter(ano__gte=ano_min)
if ano_max:
results = results.filter(ano__lte=ano_max)
if pais:
results = results.filter(pais=pais)
if revista:
results = results.filter(revista=revista)
if categoria:
results = results.filter(categoria=categoria)
#if orderby:
#results = results.order_by(orderby)
#count = results.count()
if results:
success=True
(the commented out lines where also generating similar errors).
Thanks,
Rodrigo