Проблемы с данными, которых я перемещаю, сделав график с Highcharts

Это мой драйвер:

def highcharts():    
    form = SQLFORM.factory(
        Field('usuario', 'reference usuarios',requires=IS_IN_DB(db, db.usuarios, '%(nombre)s', zero='---- Elegir Opcion ----')),
        Field('desde', 'date'),
        Field('hasta', 'date'),
    )
    data = []
    if form.process().accepted:
        usuario = form.vars.usuario
        desde = form.vars.desde
        hasta = form.vars.hasta
        if desde is None or hasta is None:
            return
        data = db((db.registro.usuario==usuario) &
                  ((db.registro.fecha_ingreso>=desde) & (db.registro.fecha_ingreso<=hasta))
                  ).select(
            db.usuarios.nombre,
            db.registro.numero_documento,
            db.registro.fecha_ingreso,
            left=(
            db.usuarios.on(db.usuarios.id==db.registro.usuario),
                 )
        )
    year = 2016
    month = 4
    dias_totales = calendar.monthrange(year, month)[1]
    categorias = [datetime.date(year, month, day).strftime('%d/%m/%y') for day in range(1, dias_totales+1)]
    series = []
    documentos_por_usuario = {}
    for documento in data:
        usuario = documento.usuarios.nombre
        if  usuario not in documentos_por_usuario:
            documentos_por_usuario[usuario] = [0] * dias_totales
            documentos_por_usuario[usuario][documento.registro.fecha_ingreso.day-1] += 1

    for nombre, cantidades in documentos_por_usuario.items():
        series.append({
            'name': nombre,
            'data': cantidades
        })

    parametros = {
        'title': {
            'text': 'Documentos por dia',
            'x': -20
        },
        'xAxis': {
            'categories': categorias
        },
        'yAxis': {
            'title': {
                'text': 'Documentos'
            },
            'plotLines': [{
                'value': 0,
                'width': 1,
                'color': '#808080'
            }]
        },
        'tooltip': {
            'valueSuffix': 'documentos'
        },
        'legend': {
            'layout': 'vertical',
            'align': 'right',
            'verticalAlign': 'middle',
            'borderWidth': 0
        },
        'series': series
    };

    parametros = json.dumps(parametros)
    return dict(parametros=parametros, form=form, data=data)

И это мой вид:

{{extend 'layout.html'}}

Datos Fechas

{{=form}} {{if len(data) > 0:}} {{pass}}

Дата да проходит по фильтру, но не показывает это мне в Highcharts:

introducir la descripción de la imagen aquí

Не, если он был, потому что мне не хватает книжного магазина или, - потому что я перемещаю плохо параметры в Highcharts.

0
задан 11.04.2016, 16:43
1 ответ

Это логическая проблема, происходит со всеми часто.

Проблема здесь:

for documento in data:
    usuario = documento.usuarios.nombre
    if  usuario not in documentos_por_usuario:
        documentos_por_usuario[usuario] = [0] * dias_totales
        documentos_por_usuario[usuario][documento.registro.fecha_ingreso.day-1] += 1

Линия, в которой ты увеличиваешь количество, должна бы быть вне if иначе только будут считать однажды из-за каждого пользователя. Исправь это для того, чтобы он был вне if:

for documento in data:
    usuario = documento.usuarios.nombre
    if  usuario not in documentos_por_usuario:
        documentos_por_usuario[usuario] = [0] * dias_totales
    documentos_por_usuario[usuario][documento.registro.fecha_ingreso.day-1] += 1

if только служит для того, чтобы инициализировать количество в нуль первый раз, который находит пользователя.

2
ответ дан 24.11.2019, 14:36