私は何をやってしまったことは以下の通りです:
1)
私はこれに帰着する検索結果を取得するためのビューを作成:
#/myproject/admin/views.py
@never_cache
def news_search(request):
#...query web service
if 'q' in request.POST:
search_term = request.POST['q']
else:
search_term = ''
news = NewsSearch()
news.search(search_term)
return render_to_response( 'news_search_results.html',
{ 'q': search_term,
'news': news.result_list,
'page': page,
'page_left': news.page_left,
'page_right': news.page_right}
)
2)Iビューをマッピングされた:
#/myapp/urls.py
...
url(r'^myapp/news/search/$', views.news_search),
3)私はchange_formを拡張しました。次のコードでニュースモデルのHTML:
#/myproject/templates/admin/myapp/news/change_form.html
{% extends "admin/change_form.html" %}
{% block after_field_sets %}
...
{% csrf_token %}
<input type="text" name="q" id="news-search-term">
<div id="news-search-results"></div>
...
function submitSearchForm() {
$.post("/myapp/news/search/",
{ 'q': $('#news-search-term').val(),
'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val() },
function(data){
$('#news-search-results').html(data);
}
);
}
{{ block.super }}
{% endblock %}
4)私は結果を表示するためのHTMLテンプレートを作成した(news_search_results.html、1を参照)
だから、基本的に私はからAJAX要求を送信していますadminページをカスタムビューに移動してWebサービスから結果を取得し、divに表示します。
結果リストの各要素には、ニュースIDを持つ要素をForeignKeyとして格納する別の要求を送信するボタンがあります。
私はこれが特にDjangoの原則に反しているかどうかはわかりません。しかし、それはうまくいくようです。
もっと「ジャンゴニア語」の方法でこれを行う際の提案は大歓迎です。
申し訳ありませんポップアップがjsonを非常に簡単に「返す」ことができないとわかりましたので、私のアドバイスを変更しました – jpic
リンクにアクセスする際に問題があります... – Yann
フィードバックをいただきありがとうございます。ホストファイルをハッキングして...リンクを更新しました – jpic