У меня есть конечный автомат (django-fsm), который позволяет объекту переходить из исходного состояния в одно из нескольких целевых состояний.Я могу добавить все действия в словаре, например:
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 как ответ.