5

エントリとカテゴリのモデルを備えた基本的なブログアプリがあります。Entryのフィールドの1つは、CategoryへのForeignKeyです。ユーザーがエントリを追加していて、「保存して別のエントリを追加する」ことを選択した場合、新しいフォームのカテゴリが保存されたばかりのオブジェクトのカテゴリと同じになるように設定されているといいのですが。

どうすればそれを達成できますか?

4

1 に答える 1

10

この質問からいくつかの助けを借りてそれを理解しました。秘訣はresponse_addresponse_changeModelAdmin

class EntryAdmin(admin.ModelAdmin):
    ...
    def response_add(self, request, obj, post_url_continue=None):
        if request.POST.has_key('_addanother'):
            url = reverse("admin:blog_entry_add")
            category_id = request.POST['category']
            qs = '?category=%s' % category_id
            return HttpResponseRedirect(''.join((url, qs)))
        else:
            return HttpResponseRedirect(reverse("admin:blog_entry_changelist"))

    def response_change(self, request, obj, post_url_continue=None):
        if request.POST.has_key('_addanother'):
            url = reverse("admin:blog_entry_add")
            category_id = request.POST['category']
            qs = '?category=%s' % category_id
            return HttpResponseRedirect(''.join((url, qs)))
        else:
            return HttpResponseRedirect(reverse("admin:blog_entry_changelist"))

Python 3の場合、

if request.POST.has_key('_addanother'):

if '_addanother' in request.POST:
于 2012-12-28T11:08:18.330 に答える