Удаление данных из postgres с помощью html.Button
Я создал генерируемые графики, которые сохраняются в postgresql. И я добавил несколько кнопок, таких как кнопка удаления для каждого графика. Это выглядит следующим образом
Я использую цикл 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)