1

データベースにクエリを実行し、返されたオブジェクトのフィールドを表示する単純な Django アプリケーションがあります。この有向グラフ ビジュアライゼーションを自分のプロジェクトに統合するにはどうすればよいか考えていました。今までd3を使ったことはありません。

私のアプリケーションについて説明させてください。現時点では、ユーザーが書籍の一意の ID を入力して、書籍に関する情報に関するデータベースの内容を照会できるフォームにすぎません。これは正常に機能し、コンテンツはテンプレートを使用して表示されます。

私がやりたいことは、クエリされたオブジェクトのフィールドの 1 つを使用して、上記のグラフの例にデータをプッシュし、テキスト リンクが押されたときにこのグラフを新しいウィンドウに表示することです。

私のアプリケーション構造は次のとおりです。

コード

myapp.models.py:

from django.db import models

class Book(models.Model):
    uid = models.IntegerField(primary_key=True)
    title = models.CharField(max_length=30)
    related_books = models.CharField(max_length=2048)
    class Meta:
        db_table = u'books'

フィールドrelated_booksには、グラフにしたいデータが含まれています。データはrel_book1 rel_book2 rel_book3 ...、各書籍が照会された Book オブジェクトに関連する形式で保存されます。各オブジェクトにはn関連する書籍がありますが、少なくとも常に 2 つ存在します。

myproject.templates.search.html:

<form action="" method="get">
<label for="id_q">Search:</label>
<input id="id_q" name="q" type="text">
<input type="submit" value="Submit">

{% if found_entries %}
    <ul>
        {% for i in found_entries %}
            {{ i.uid }} {{ i.title }} {{ value|linebreaks }}
        {% endfor %}
    </ul>
{% endif %}
</form>

ここにグラフを表示します。テキストリンクが押されたときに新しいウィンドウで。

myapp.views.py:

from django.shortcuts import render_to_response
from django.template import RequestContext
from myapp.search import get_query
from myapp.models import Book

def search(request):
    query_string = ''
    found_entries = None

    if ('q' in request.GET) and request.GET['q']:
        query_string = request.GET['q']
        found_entries = Book.objects.filter(uid=query_string)

    return render_to_response('search.html',
                        { 'query_string': query_string, 'found_entries': found_entries },
                          context_instance=RequestContext(request))

繰り返しになりますが、ユーザーが特定の本に固有の ID を入力すると、その本に関連するデータベースのコンテンツが表示されます。IDとタイトルが表示された時点で、有向グラフの例へのリンクも表示したいと思います。

私の質問は、related_booksBook モデルがクエリされたときにフィールドから情報を抽出するにはどうすればよいですか?これにより、このデータをグラフの例にプッシュして、生成された各 Book オブジェクトのグラフを生成できます。

我慢してくれてありがとう!

4

1 に答える 1

1

あなたはすでに十分な情報を持っているようです。ビューはフィルターに一致する book オブジェクトを返しrelated_books、Book クラスのメンバーです。

related_books各本の属性を繰り返し処理して、その場でリンクを生成するだけで済みます。

{% for book in found_entries %}
# print out whatever results here
<a href="graphing_page.html?contents=
    {% for content in book.related_books %}content{% endfor %}
">Graph this</a>
{% endfor %}

d3 ライブラリがどのパラメーターを使用するかはわかりませんが、接続されたコンポーネントのリストは妥当なようです。

于 2013-01-29T19:00:37.257 に答える