Yaptığım şey şu:
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
})
Temelde biz sadece eylemleri değişiklik görünümünde açılır menüsünü doldurmak için gerekli verileri topluyoruz şu şekildedir:
Birincisi, ModelAdmin nesnenin change_view uzatıldı.
Sonra ben sadece söz konusu model için change_form.html uzatıldı:
{% 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 %}
Bu yönetici eylemleri bölüm değişim listesi görünümünde çıkılır nasıl hemen hemen aynıdır. Ana farklar şunlardır: 1) hangi formun değiştirilmesi gerektiğini belirlemek için bir onay kutusu yerine, 2), form için bir URL belirtmek zorundaydı, değer gizli bir form alanı ile ayarlanır ve 3) Değişim listesi görünümü için CSS'yi ekledim ve #changelist
kimliğine sahip bir div içindeki eylemleri taktım - böylece kutu yarı yolda kalıyordu.
Mükemmel bir çözüm değil, ancak tamam çalışıyor ve ekleyebileceğiniz ek işlemler için ek bir yapılandırma gerektirmiyor.
teşekkürler. Kendi çözümümüzü yayınlamayı bitirdim, ama yorumunuz aslında sadece onu emmeye ve şablonu genişletmeye ihtiyacım olduğunu anlamama yardımcı oldu. – jsdalton