0

次のようなビューがあります。

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]

    context = {'pelicula': pelicula, 'funciones': funciones}
    return render_to_response('cartelera-pelicula.html', context, context_instance=RequestContext(request))

例 (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'>

そして最後にクエリセットからアイテムにアクセスします:

(Pdb) funciones['espanol'][0]
<Funcion: American Junkie, Funcion #9: Sebas el Genio>
type(funciones['espanol'][0])
<class 'core_app.models.Funcion'>

今、私のテンプレートは次のようになります。

{% for key,value in funciones.items %}
    {% regroup value by idcine as cine_list %}
    <ul>
        {% for c in cine_list %}
        <li>{{ c.grouper }}</li>
        <ul>
            {% for item in cine_list %} 
               <li>{{key}}:{{item}}</li>   
            {% endfor %}    
        </ul></li>  
        {% endfor %}
    </ul>
    {% endfor %}

これで得られる出力:

Supercines Quicentro Sur

espanol_3d_gtmax:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Supercines Quicentro Sur

espanol_3d_vip:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Supercines Quicentro Sur

espanol_3d_xd:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Multicines CCI
espanol_3d:{'list': [<Funcion: Multicines CCI, Funcion #16: Intouchables>], 'grouper': <Cine: Multicines CCI>}
espanol_3d:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Supercines Quicentro Sur
espanol_3d:{'list': [<Funcion: Multicines CCI, Funcion #16: Intouchables>], 'grouper': <Cine: Multicines CCI>}
espanol_3d:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Multicines Recreo
subtitulada_vip:{'list': [<Funcion: Multicines Recreo, Funcion #28: Intouchables>], 'grouper': <Cine: Multicines Recreo>}

Multicines CCI
espanol:{'list': [<Funcion: Multicines CCI, Funcion #16: Intouchables>], 'grouper': <Cine: Multicines CCI>}
espanol:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

そして、代わりに取得するのは次のようなものです。

Supercines Quicentro Sur
espanol_3d_gtmax:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}
espanol_3d_vip:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}
espanol_3d_xd:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Multicines CCI
espanol_3d:{'list': [<Funcion: Multicines CCI, Funcion #16: Intouchables>], 'grouper': <Cine: Multicines CCI>}
espanol:{'list': [<Funcion: Supercines Quicentro Sur, Funcion #27: Intouchables>], 'grouper': <Cine: Supercines Quicentro Sur>}

Multicines Recreo
subtitulada_vip:{'list': [<Funcion: Multicines Recreo, Funcion #28: Intouchables>], 'grouper': <Cine: Multicines Recreo>}

目的の出力を得るために何を変更する必要があるかについてのアイデアはありますか?

ありがとう

4

1 に答える 1

2

regroup最初に試してみてくださいdictsort

{% regroup value|dictsort:"idcine" by idcine as cine_list %}
于 2012-12-26T19:19:20.140 に答える