#Queries
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, xd=None, vip=None)
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, gtmax=None, xd=None, vip=None)
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, gtmax=None, xd=None)
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, gtmax=None, vip=None)
espanol_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", gtmax=1, tipo_3d=None, vip=None, xd=None)
espanol = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", gtmax=None, tipo_3d=None, vip=None, xd=None)
espanol_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", vip=1, gtmax=None, tipo_3d=None, xd=None)
espanol_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Espanol", xd=1, vip=None, gtmax=None, tipo_3d=None)
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, xd=None, vip=None)
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, gtmax=None, xd=None, vip=None)
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, gtmax=None, xd=None)
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, vip=None, gtmax=None)
subtitulada_gtmax = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", gtmax=1, tipo_3d=None, xd=None, vip=None)
subtitulada = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", gtmax=None, tipo_3d=None, vip=None, xd=None)
subtitulada_vip = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", vip=1, gtmax=None, tipo_3d=None, xd=None)
subtitulada_xd = Funcion.objects.filter(fecha_inicio__lte=today, fecha_fin__gte=today, idpelicula__slug=slugpelicula, idciudad=city, visible=1, idioma="Subtitulada", xd=1, vip=None, gtmax=None, tipo_3d=None)
#Creating a dictionary of all types of funciones querysets
func_tags = ['espanol', 'subtitulada', 'espanol_3d', 'subtitulada_3d', 'espanol_3d_gtmax', 'espanol_vip', 'espanol_xd', 'subtitulada_3d_gtmax', 'subtitulada_3d_vip',
'espanol_3d_vip', 'espanol_3d_xd', 'espanol_gtmax', 'subtitulada_3d_xd', 'subtitulada_gtmax', 'subtitulada_vip', 'subtitulada_xd']
func_all = [espanol, subtitulada, espanol_3d, subtitulada_3d, espanol_3d_gtmax, espanol_vip, espanol_xd, subtitulada_3d_gtmax, subtitulada_3d_vip, espanol_3d_vip, espanol_3d_xd,
espanol_gtmax, subtitulada_3d_xd, subtitulada_gtmax, subtitulada_vip, subtitulada_xd]
funciones = dict(zip(func_tags, func_all))
#Removing empty element from funciones dictionary
for x in list(funciones.keys()):
if not (funciones[x]).exists():
del funciones[x]
cine_tags = []
for key, value in funciones.iteritems():
for item in value:
cine_tags.append(item.idcine.nombre)
cine_tags_unique = list(set(cine_tags))
horarios = {}
for cine in cine_tags_unique:
horarios[cine] = []
#Appending func_tags and funciones to the horarios dictionary organized by cine
for key, value in funciones.iteritems():
for item in value:
for in_key, value in horarios.iteritems():
if in_key == item.idcine.nombre:
horarios[in_key].append((key, item))
追加情報:
Function : 映画館での映画の上映時間を表す django クエリセット。
関数オプションのタイプ:
['espanol', 'subtitulada', 'espanol_3d', 'subtitulada_3d', 'espanol_3d_gtmax', 'espanol_vip', 'espanol_xd', 'subtitulada_3d_gtmax', 'subtitulada_3d_vip','espanol_3d_vip', 'espanol_3d_xd', 'espanol_gtmax', 'subtitulada_3d_xd', 'subtitulada_gtmax', 'subtitulada_vip', 'subtitulada_xd']
映画館のオプション:
[u'Cinemark Plaza de las Americas', u'Cineplex', u'Multicines CCI', u'Supercines Quicentro Sur', u'Supercines San Luis', u'Multicines Recreo', u'Multicines Scala', u'Mis Cines', u'Multicines Condado']
これで、次のような構造のタプルの辞書ができました。
'Movie theather': [(type_of_funcion, funcion_object), (type_of_funcion, funcion_object)], 'Another Movie Theater': [(type_of_funcion, funcion_object)],...
私が今持っているdictのサンプルデータは次のようになります:
{u'Cinemark Plaza de las Americas': [('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #540: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #541: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #542: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #548: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #549: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #550: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #530: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #531: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #532: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Cinemark Plaza de las Americas, Funcion #533: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #508: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #509: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #510: The Hobbit: An Unexpected Journey>), ('subtitulada', <Funcion: Cinemark Plaza de las Americas, Funcion #511: The Hobbit: An Unexpected Journey>)], u'Cineplex': [('subtitulada_3d', <Funcion: Cineplex, Funcion #454: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cineplex, Funcion #455: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cineplex, Funcion #456: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #451: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #452: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cineplex, Funcion #453: The Hobbit: An Unexpected Journey>)], u'Multicines CCI': [('espanol_3d', <Funcion: Multicines CCI, Funcion #158: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #160: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #165: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #166: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Multicines CCI, Funcion #168: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #431: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #434: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #436: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #438: The Hobbit: An Unexpected Journey>), ('espanol', <Funcion: Multicines CCI, Funcion #439: The Hobbit: An Unexpected Journey>)]}
これに関する問題は、次のような関数の「繰り返し」タイプがあることです。
{u'Cinemark Plaza de las Americas': [('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #540: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #541: The Hobbit: An Unexpected Journey>), ('subtitulada_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #542: The Hobbit: An Unexpected Journey>), ('espanol_3d', <Funcion: Cinemark Plaza de las Americas, Funcion #548: The Hobbit: An Unexpected Journey>),
その代わりに、映画館に属する関数の種類ごとにグループ化したいと思います。たとえば、次のようになります。
{u'Cinemark Plaza de las Americas': { {'subtitulada': Funcion1, Funcion2, Funcion3}, {'subtitulada_3d': Funcion4, Fucion5} }, next_movie_theather: {},...}
これを達成する方法についてのアイデアはありますか? ありがとう