Как создать сложное действие администратора, требующее дополнительной информации?

Я заинтересован в создании действия для интерфейса администратора, которое требует некоторой дополнительной информации помимо выбранных элементов. Мой пример - массовое добавление комиксов в серию. (Да, я знаю очевидное Ответ заключается в создании схемы с отношениями X-X-X, но потерпите меня ради простого примера).

В этом примере я создал 100 комиксов. После того, как они созданы, я бы хотел связать их с объектом серии, который уже был создан. Чтобы выполнить это действие в администраторе, я бы хотел выбрать элементы, а затем начать действие. Затем меня спросят, какой объект серии использовать (через всплывающее окно, промежуточную форму и т. Д.).

Я следовал приведенным здесь инструкциям , которые утверждают, что выполняют это через промежуточную форму. После работы с ним я больше не получаю ошибок, но само действие также не выполняется - forloop никогда не выполняется. Вместо этого он возвращается к списку комиксов с сообщением: «Никаких действий не выбрано».

Мой метод admin.py:

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
def addSeries(self, request, queryset):
    form = None
    if 'cancel' in request.POST:
        self.message_user(request, 'Canceled series linking.')
        return
    elif 'link_series' in request.POST:
        form = self.SeriesForm(request.POST)
        if form.is_valid():
            series = form.cleaned_data['series']
            for x in queryset:
                y = Link(series = series, comic = x)
                y.save()
            self.message_user(request, self.categorySuccess.render(Context({'count':queryset.count(), 'series':series})))
            return HttpResponseRedirect(request.get_full_path())
    if not form:
        form = self.SeriesForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
    return render_to_response('setSeries.html', {'comics': queryset, 'form': form, 'path':request.get_full_path()}, context_instance=RequestContext(request))
addSeries.short_description = 'Set Series'

Моя промежуточная форма setSeries.html:



    
        Create Series Links
    
    
        

Create Series Links

Choose the series for the selected comic(s):

{{ form }}

This categorization will affect the following:

    {% for comic in comics %}
  • {{ comic.title }}
  • {% endfor %}

8
задан Flimzy 9 June 2018 в 09:19
поделиться