다음은 내가 한 일입니다.
def change_view(self, request, object_id, extra_context=None):
actions = self.get_actions(request)
if actions:
action_form = self.action_form(auto_id=None)
action_form.fields['action'].choices = self.get_action_choices(request)
else:
action_form = None
changelist_url = urlresolvers.reverse('admin:checkout_order_changelist')
return super(OrderAdmin, self).change_view(request, object_id, extra_context={
'action_form': action_form,
'changelist_url': changelist_url
})
을 기본적으로 우리가 행동이 변화보기에 드롭 다운 채우는 데 필요한 데이터를 수집하고 다음과 같이
첫째, 나는 ModelAdmin 개체의 change_view을 확장했다.
그럼 난 그냥 문제의 모델 change_form.html 확장 :
는
{% extends "admin/change_form.html" %}
{% load i18n adminmedia admin_list %}
{% block extrastyle %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% admin_media_prefix %}css/changelists.css" />
{% endblock %}
{% block object-tools %}
{{ block.super }}
<div id="changelist">
<form action="{{ changelist_url }}" method="POST">{% csrf_token %}
{% admin_actions %}
<input type="hidden" name="_selected_action" value="{{ object_id }}">
</form>
</div>
{% endblock %}
이 관리자의 작업 섹션은 변경 목록보기에 출력하는 방법과 거의 동일하다. 주요 차이점은 1) 양식을 게시 할 URL을 지정해야한다는 것, 2) 변경해야 할 개체를 지정하는 확인란 대신 숨겨진 양식 필드를 통해 값을 설정하는 것, 3) 나는 변경 목록보기를 위해 CSS를 포함 시켰고, ID가 #changelist
인 div에 작업을 붙였습니다. 상자가 중간 정도 괜찮은 것처럼 보일 것입니다.
좋은 해결책은 아니지만 문제가 없으며 추가 할 수있는 추가 작업이 필요하지 않습니다.
감사합니다. 결국 내 솔루션을 게시했지만 귀하의 의견은 실제로 내가 그것을 빨아 들여 그 템플릿을 확장해야한다는 것을 알게되었습니다. – jsdalton