Django管理アクション-中間ページアクション

こんにちは 管理パネルの便利なアクションピース! 要素を選択した後、これらの要素で何か特別なことができるように、ユーザーを中間ページに送るアクションを作成する方法を共有したいと思います。 例? たとえば、オンラインストア、商品テーブルがあります。 1つのセクション(書籍)から別のセクション(技術書籍)に商品の一部を転送します。 必要な書籍を選択し、「別のセクションに転送」アクションを選択し、「適用」をクリックして、中間ページに移動し、目的のセクションを選択して「保存」をクリックします。 素晴らしいですか? やってみましょう。



フォームについて説明します。



class ChangeCategoryForm(forms.Form): _selected_action = forms.CharField(widget=forms.MultipleHiddenInput) category = forms.ModelChoiceField(queryset=Category.objects.all(), label=u' ')
      
      





神秘的なフィールド_select_action 、はい? 選択した要素のIDがあります。 DjangoはPOSTリクエストからそれらを選択し、アクションを実行するQuerysetにします(以下のコードを参照)。



私たちの行動は常に方法です。 move_to_categoryと呼びましょう。



 def move_to_category(modeladmin, request, queryset): form = None if 'apply' in request.POST: form = ChangeCategoryForm(request.POST) if form.is_valid(): category = form.cleaned_data['category'] count = 0 for item in queryset: item.category = category item.save() count += 1 modeladmin.message_user(request, " %s   %d ." % (category, count)) return HttpResponseRedirect(request.get_full_path()) if not form: form = ChangeCategoryForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)}) return render(request, 'catalog/move_to_category.html', {'items': queryset,'form': form, 'title':u' '}) move_to_category.short_description = u" "
      
      





ProductAdminクラスでアクションを宣言します。



 actions = [move_to_category,]
      
      





そして、すべてを表示するテンプレートを作成します



 {% extends "admin/base_site.html" %} {% block content %} <form action="" method="post">{% csrf_token %} {{ form }} <p>      :</p> <ul>{{ items|unordered_list }}</ul> <input type="hidden" name="action" value="move_to_category" /> <input type="submit" name="apply" value="" /> </form> {% endblock %}
      
      





それだけです。 このようにして、非常に多くのあらゆる種類の重要で、必要で、興味深いことができます。



最後に、すべての仕組みを示す作業中のドラフトのスクリーンショットを提供したいと思います。



画像



画像



画像



画像



頑張って



All Articles