오브젝트가 소스 상태에서 여러 대상 상태 중 하나로 이동할 수 있도록하는 유한 상태 시스템 (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 사전 외부에서 클릭 한 버튼을 얻을 수있는 방법이 있습니까?
추신 : "여러 단추"질문에 대한 다른 답장을 보았지만 모두 제공 요청입니다. 답변은 답변입니다.
피하려고하는 바로는 이중 중첩입니다 ... 다른 방법이 있기를 바랍니다. –
내가 가지고있는 것처럼 보입니다. 당분간 마지막 코드 단편에 해당하는 것을 사용하는 것입니다 :) 접두어 아이디어에 감사드립니다! –