我的观点如下:
def CarteleraPeliculaToday(request, slugpelicula):
city = request.session["ciudad"]
today = (datetime.utcnow() - timedelta(hours=5)).date() # date: Ecuador time zone
pelicula = Pelicula.objects.get(slug=slugpelicula)
espanol_3d_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, gtmax=1)
espanol_3d = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1)
espanol_3d_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, vip=1)
espanol_3d_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", tipo_3d=1, xd=1)
espanol_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", gtmax=1)
espanol = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol")
espanol_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", vip=1)
espanol_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", xd=1)
subtitulada_3d_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, gtmax=1)
subtitulada_3d = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1)
subtitulada_3d_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, vip=1)
subtitulada_3d_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", tipo_3d=1, xd=1)
subtitulada_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", gtmax=1)
subtitulada = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada")
subtitulada_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", vip=1)
subtitulada_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", xd=1)
#Creating a dictionary of all types of funciones querysets
funciones = {'espanol': espanol, 'subtitulada': subtitulada, 'espanol_3d': espanol_3d, 'subtitulada_3d': subtitulada_3d, 'espanol_3d_gtmax': espanol_3d_gtmax,
'espanol_vip': espanol_vip, 'espanol_xd': espanol_xd, 'subtitulada_3d_gtmax': subtitulada_3d_gtmax, 'subtitulada_3d_vip': subtitulada_3d_vip, 'espanol_3d_vip': espanol_3d_vip, 'espanol_3d_xd': espanol_3d_xd, 'espanol_gtmax': espanol_gtmax,
'subtitulada_3d_xd': subtitulada_3d_xd, 'subtitulada_gtmax': subtitulada_gtmax, 'subtitulada_vip': subtitulada_vip, 'subtitulada_xd': subtitulada_xd}
#Removing empty element from funciones dictionary
for x in list(funciones.keys()):
if not (funciones[x]).exists():
del funciones[x]
#import pdb; pdb.set_trace()
context = {'pelicula': pelicula, 'funciones': funciones}
return render_to_response('cartelera-pelicula.html', context, context_instance=RequestContext(request))
我的模板看起来像这样:
{% for key,value in funciones.items %}
{{key}}
{% for queryset in value %}
{% for item in queryset %}
{{item}}
<br/>
{% endfor %}
{% endfor %}
{% endfor %}
示例(来自ipdb):
(Pdb) funciones
{'espanol_3d_gtmax': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_3d_vip': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_3d_xd': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_xd': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_vip': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_3d': [<Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol': [<Funcion: American Junkie, Funcion #9: Sebas el Genio>, <Funcion: ted, Funcion #15: Sebas el Genio>], 'espanol_gtmax': [<Funcion: ted, Funcion #15: Sebas el Genio>]}
<type 'dict'>
现在访问一个值:
funciones['espanol']
[<Funcion: American Junkie, Funcion #9: Sebas el Genio>, <Funcion: ted, Funcion #15: Sebas el Genio>]
type(funciones['espanol'])
<class 'django.db.models.query.QuerySet'>
最后从Queryset访问一个项目:
(Pdb) funciones['espanol'][0]
<Funcion: American Junkie, Funcion #9: Sebas el Genio>
type(funciones['espanol'][0])
<class 'core_app.models.Funcion'>
问题是模板会抛出此错误:
'Funcion' object is not iterable
Request Method: GET
Request URL: //127.0.0.1:8000/cartelera/sebas-el-genio/
Django Version: 1.4.1
Exception Type: TypeError
Exception Value:
'Funcion' object is not iterable
任何想法,任何人?
由于
答案 0 :(得分:1)
你有一个太多的循环级别。从第一个for-loop'值'将包含查询集对象。第二个for循环将迭代每个查询集的结果,即'queryset'循环变量将包含Function模型的各个实例。