У меня есть конечный конечный автомат (django-fsm), который позволяет объекту перейти из состояния источника в одно из нескольких целевых состояний. Я могу добавить все действия в словаре, например:Получите нажатую кнопку отправки в форме django в общем виде
ACTIONS { 'button_1': action1,
'button_2': action2,
...
}
Это означает,
{% for n,m in object.get_available_current_state_transitions %}
<input type="submit" class="btn" value="{{ n|get_action|capfirst }}"
name="button_{{n}}" />
{%endfor%}
<input type="submit" class="btn primary" value="Save">
<a class="btn" onclick="javascript:history.go(-1)">Cancel</a>
Обычно это приводит к более чем 3-мя кнопками.
Нажатие на кнопку приводит к определенному действию, определенному в моем случае в классе модели.
Теперь, я знаю, что могу получить щелкнул кнопку в request.POST
словаре, но это приведет к каскаду, если как:
if 'button_1' in request.POST:
action_1()
elif 'button_2' in request.POST:
...
Есть ли способ, чтобы получить кнопку нажатой отдельно (в идеале от запрос объекта) в переменной, чтобы я мог иметь что-то вроде
ACTIONS[clicked_button_name](...)
? Другими словами, есть ли способ получить нажатую кнопку за пределами словаря POST?
PS: Я смотрел другие ответы на вопрос «несколько кнопок», но все предлагают request.POST в качестве ответа.
То, что я пытаюсь избежать, это двойное вложение ... Я надеялся, что есть другой способ. –
Похоже, что у меня будет использовать что-то эквивалентное последнему фрагменту кода на данный момент :) Спасибо за идею префикса! –