モデルインスタンスを追加して保存を閉じるには、django管理者の中に新しいウィンドウを開くコードを書いています。これは、ForeignKeyフィールドadd(緑色のプラス記号)の動作に非常に似ていますが、新しく作成されたモデルインスタンスは選択されていません(外部キーフィールドではないため)。save_modelをオーバーライドしてウィンドウを閉じる
私がポップアップリンクを作成するために追加のコードは次のとおりです。私のモデルは、イベントと呼ばれる
link = '<a id="add_id_event" class="add-another" onclick="return showAddAnotherPopup(this);" href="%s?date=%s">add</a>' % (addurl,currentdate)
。私は正しくRelatedObjectLookups.jsを追加します
このモデルを保存しようとすると、djangoはForeignKeyフィールドで使用するのと同じコードを適用し、私が持っていないSelectBoxをアクティブにしようとします。これはjavascriptのが失敗することははwindow.close()
に到達する前に、私はこのコードが使用されているが、HttpResponseの呼び出しは無視され、Djangoがレンダリングされ
def save_model(self, request, obj, form, change):
if request.GET.get('_popup') == '1':
obj.save()
return HttpResponse('<script type="text/javascript">window.close()</script>')
でsave_model関数をオーバーライドしようとしましたデフォルト。例えば
<script type="text/javascript">opener.dismissAddAnotherPopup(window, "14382", "TMC 2012\u002D02\u002D02 10:00:00 DDT2010B\u002D028");</script>
宛先SelectBoxオブジェクトがないために失敗します。
ありがとうございました。
ModelAdminで 'save_model'の代わりに' add_view 'をオーバーライドしてみてください。 'save_model'は' HttpResponse'を返すとは思われません – ilvar