Все, заработало. В итоге код должен выглядеть так:
from django.contrib import admin
from django import forms
from models import Category, Product
from django.shortcuts import render
from django.contrib import messages
class CategoryForm(forms.Form):
category = forms.ModelChoiceField(queryset = Category.objects.all())
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'category', 'price', )
actions = ['set_category_action']
def set_category_action(self, request, queryset):
if 'do_action' in request.POST:
form = CategoryForm(request.POST)
if form.is_valid():
category = form.cleaned_data['category']
updated = queryset.update(category=category)
messages.success(request,
'{} товаров перемещено в категорию {}'.format(
updated, category))
# Ничего не возвращаем, это вернет нас на список товаров
return
else:
form = CategoryForm()
return render(request,
'admin1/set_category.html',
{'title': u'Укажите категорию, в которую надо переместить товары',
'objects': queryset,
'form': form})
set_category_action.short_description = u'Переместить в категорию'
admin.site.register(Category)
admin.site.register(Product, ProductAdmin)
Из лени код формы оставил в admin.py
.
Updated 13 March 2015, 8:30 by RaD.