5

django admin でモデルを保存したときに中間ページを表示する方法が必要です。

私が達成したいのは、モデルを「保存」した後、モデルのすべての属性が並んだページを表示してから、というボタンを表示することPrintです。をクリックすると、Jqueryダイアログdivでこれを解決していましたsave。つまり、モデルを実際に保存する前に設定の印刷ビューを表示しましたが、最初にモデルを検証する必要があります。

「モデルの削除」アクションが実装される方法に似ています。しかし、どこから探し始めればよいのかわかりません。

編集:とメソッドdjango.contrib.admin.options.pyを 探し始めました。ただし、それらをオーバーライドする方法がわかりません。また、特定のモデルにのみ必要なため、一般的ではありません。また、クラス ModelAdmin のテンプレートのリストを発見しました。管理者をビットにハッキングせずに続行する方法についてはまだわかりません。response_changeresponse_add

編集 2: 下に私の実用的なソリューションを追加しました。

4

3 に答える 3

0

それで、少しコーディングした後、動作するようになりました。

私のモデル管理者は今これに似ています

class MyModelAdmin(admin.ModelAdmin):
    def get_urls(self):
        urls = super(MyModelAdmin, self).get_urls()
        my_urls = patterns('',
            (r'^my_view/$', self.my_view)
        )
        return my_urls + urls

    def my_view(self,request,pk):
        from django.shortcuts import render_to_response
        from django.template import RequestContext

        object = Model.objects.get(pk=pk)
        model_dict = model_object.__dict__
        return render_to_response('admin/app_name/model/model_view.html',locals(),context_instance=RequestContext(request))

    @csrf_protect_m
    @transaction.commit_on_success
    def add_view(self, request, form_url='', extra_context=None):
        "The 'add' admin view for this model."
        model = self.model
        opts = model._meta

        if not self.has_add_permission(request):
            raise PermissionDenied

        ModelForm = self.get_form(request)
        formsets = []
        inline_instances = self.get_inline_instances(request)
        if request.method == 'POST':
            form = ModelForm(request.POST, request.FILES)
            if form.is_valid():
               new_object = self.save_form(request, form, change=False)
               form_validated = True
            else:
               form_validated = False
               new_object = self.model()
            prefixes = {}
            for FormSet, inline in zip(self.get_formsets(request), inline_instances):
               prefix = FormSet.get_default_prefix()
               prefixes[prefix] = prefixes.get(prefix, 0) + 1
               if prefixes[prefix] != 1 or not prefix:
                  prefix = "%s-%s" % (prefix, prefixes[prefix])
               formset = FormSet(data=request.POST, files=request.FILES,
                              instance=new_object,
                              save_as_new="_saveasnew" in request.POST,
                              prefix=prefix, queryset=inline.queryset(request))
               formsets.append(formset)
            if all_valid(formsets) and form_validated:
               self.save_model(request, new_object, form, False)
               self.save_related(request, form, formsets, False)
               self.log_addition(request, new_object)
               log.info('The new object has %s id' % new_object.id)
               return HttpResponseRedirect('/admin/draws/contest/contest_view/%s' % new_object.id)  <-- changed to my new one
               .................
               .................

で html テンプレートを作成しましtemplates/admin/app_name/model_view.htmlた。

于 2013-03-03T08:22:10.647 に答える