Я пытаюсь создать dash-приложение для определения цен (финансы). Я сделал свой макет без особых проблем с интерактивными компонентами. Моя проблема:
У меня есть один daq.NumericInput (# daq1), который создает несколько других daq.NumericIputs в зависимости от числа, введенного в # daq1. Теперь я хотел бы сохранить значения в созданном daq.NumericInputs, но я не знаю, сколько значений у меня будет заранее.
Я пытался:
-1 / Сохранить вa json - идентификаторы daq.NumericInputs в то время, когда они создаются в dict, а затем попробуйте обратный вызов для этого dict, который имеет переменное число элементов.
-2 / Use StatePattern, StateGroup ... (как показано здесь: https://github.com/plotly/dash/issues/475). Я дал групповые идентификаторы своим daq.NumericInputs при их создании, а затем попытался вызвать их в моем обратном вызове как группа ...
CODE:
1 /
call_input = daq.NumericInput(
id="call_input", className="setting-input", size=1000, max=nb_max_option,value=0
)
#in the app.layout :
call_input
html.Div(id='data-list-1')
html.Div(id="call-tab")
@app.callback([Output("call-tab", "children"),Output('data-list-1','children')],
[Input("call_input", "value")])
def build_call_tab(value):
my_list = []
store_data_1 = {}
store_data_1["call_input"]="value"
if float(format(value)) > 0:
my_list.append(
build_value_setter_line_3h(
"call-tab-header",
"Product",
"Strike",
"Buy/Sell"
)
)
for i in range (1,value+1):
my_list.append(
build_value_setter_line_3(
"call-tab-{}".format(i) ,
"Call Option {}".format(i) ,
daq.NumericInput(
id="call_input_strike{}".format(i) , className="setting-input", size=400, max=9999999,value=0
),
"buy_sell_call{}".format(i)
),
)
store_data_1["call_input_strike{}".format(i)]="value"
store_data_1["buy_sell_call{}".format(i)]="value"
return my_list, json.dumps(store_data_1)
@app.callback(Output("graph-payoff-1", "children"),
[Input("button-payoff", "n_clicks")],
[State(key,value) for key, value in json.loads('data-list-1').items()])
def ...
2 /
@app.callback(Output("graph-payoff-1", "children"),
[Input("button-payoff", "n_clicks")],
[StateGroup(group='id', property='value')])
def ...
Возможно, я полностью растерялся и делаю это неправильно (я начал разрабатывать это приложение в эти выходные, и я никогда не делалдругие приложения в dash (python), я только один сделал в Shiny (R)).
Все ваши ответы и предложения приветствуются!