Удаление данных из postgres с помощью html.Button

Я создал генерируемые графики, которые сохраняются в postgresql. И я добавил несколько кнопок, таких как кнопка удаления для каждого графика. Это выглядит следующим образом ![image|690x340](upload://hrztRthSFDapMBhbw2upqMhT1Jy.png) Я использую цикл for для создания графиков и добавления их.

Как я могу использовать кнопку удаления? Я пытался создать другой обратный вызов, если я нажимаю на другую кнопку удаления, то выводится "None", но если я нажимаю на последнюю, то выводится "1". Есть ли другое решение? Если я нажму на кнопку удаления, получу значение dcc.input, которое является ID из postgresql, а затем вызову модель диаграмм

ChartsModels().objects.get(id=значение dccinput).delete()

Я открыт для любых предложений по улучшению моей работы.

app.layout = html.Div(id='graphs', children=[
])

@app.callback(Output('graphs', 'children'),
              Input('graphs', 'children'))
def update_extend_traces_traceselect(child):
app.layout = html.Div(id='graphs', children=[
])

@app.callback(Output('graphs', 'children'),
              Input('graphs', 'children'))
def update_extend_traces_traceselect(child):

    i = 0

        for b in barData:
                fig = go.Figure()
                fig.add_trace(
                    go.Bar(
                        x=[d['value'] for d in y][0],
                        y=newdatetime,
                        name=barname[i],
                        marker_color=barcolor[i],
                        orientation=orientation[i],
                        marker_line_color=markerlinecolor[i],
                        marker_line_width=float(markerlinewidth[i])
                    ))
            else:
                fig = go.Figure()
                fig.add_trace(
                    go.Bar(
                        y=[d['value'] for d in y][0],
                        x=newdatetime,
                        name=barname[i],
                        marker_color=barcolor[i],
                        orientation=orientation[i],
                        marker_line_color=markerlinecolor[i],
                        marker_line_width=float(markerlinewidth[i])
                    ))

            fig.update_layout(
                # barmode=barmode[i],
                xaxis_title=xtitle[i],
                yaxis_title=ytitle[i],
                title=title[i],
                showlegend=ast.literal_eval(showlegend[i]),
                xaxis_showgrid=ast.literal_eval(showgrid[i]),
                yaxis_showgrid=ast.literal_eval(showgrid[i]),
                xaxis_showticklabels=ast.literal_eval(showticklabels[i]),
                yaxis_showticklabels=ast.literal_eval(showticklabels[i])

            )

            child.append(html.Div(id="div-id", children=[dcc.Input(
                id="charts-id",
                type="text",
                value=chart_ID[i]
            ), html.Button('EDIT', id='edit-chart',
                           style={'margin': '5px'}),
                html.Button('Delete', id='delete-chart', n_clicks=0,
                            style={'margin': '5px'}),
                dcc.Graph(figure=fig,
                          config={
                              'displayModeBar': False,
                          })],
                style={'height': '550px', 'width': '550px', 'margin': '10px',
                       'border': '1px solid'}))

            i = i + 1
return child

@app.callback(Output('delete-chart', 'n_clicks'),
              Input('delete-chart', 'n_clicks'),
              State('charts-id', 'value'),
              State('div-id', 'children'))
def delete(n_clicks, value, children):
    print(children)

if "OverviewChart" == '__main__':
    app.run_server(debug=True)

Вернуться на верх