エントリとカテゴリのモデルを備えた基本的なブログアプリがあります。Entryのフィールドの1つは、CategoryへのForeignKeyです。ユーザーがエントリを追加していて、「保存して別のエントリを追加する」ことを選択した場合、新しいフォームのカテゴリが保存されたばかりのオブジェクトのカテゴリと同じになるように設定されているといいのですが。
どうすればそれを達成できますか?
エントリとカテゴリのモデルを備えた基本的なブログアプリがあります。Entryのフィールドの1つは、CategoryへのForeignKeyです。ユーザーがエントリを追加していて、「保存して別のエントリを追加する」ことを選択した場合、新しいフォームのカテゴリが保存されたばかりのオブジェクトのカテゴリと同じになるように設定されているといいのですが。
どうすればそれを達成できますか?
この質問からいくつかの助けを借りてそれを理解しました。秘訣はresponse_add
、response_change
ModelAdmin
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: