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