2016-04-05 4 views
0

私は画像を表示するホームページを持っています。これは私の画像テーブルからアクセスされます。これには、ユーザーIDの形式で所有者の列が含まれています。私はまた、それらの画像を提出したユーザーのテーブルを持っています。イメージを表示するときにIDを使用してユーザーテーブルからユーザー名を取得するようにするにはどうすればよいですか?Djangoは2つのテーブルからデータを取得します。関連するデータのみ

views.py:

def index(request): 
    context = {} 
    populateContext(request, context) 
    context.update(gallery=ImageDoc.objects.only('thumbfile').order_by('-id')) 

    return render(request, 'register/index.html', context) 

だから、index.htmlページでは、私は、画像を表示するために 'ギャラリー' を反復処理することができます。同様に:

{% for image in gallery %} 
    <a href="/logo/{{ image.slug }}"> 
     <img src="{{ MEDIA_URL }}{{ image.largethumbfile }}"> 
     {{ image.title }} by {{ image.username }} for {{ image.price }} 
    </a> 
{% endfor %} 

"image.username"は明らかに機能しません。

get_users = User.objects.get() 

そして、これに画像データをつかん再フォーマット:私はこれで、ユーザーテーブルにアクセスする必要が知っている

get_images = ImageDoc.objects.get() 

しかし、私はデータの一致を確保するために、次のステップを知りません。何か案は?ありがとうございました!

+0

doens't {{image.owner.username}}は動作しますか? – Aquiles

+0

それを試して、それは動作しませんでした。 – Bob

+1

あなたのモデルが所有者に外部キーを使用している場合、それにアクセスできるはずですが、通常はコンテキスト更新ルートを使用しません。render_to_responseを使用してクエリを渡すことをお勧めします。そして、あなたは{{images.owner}}の外部キーの名前を使用する必要があります – Aquiles

答えて

0

テーブルがUsersテーブルを外部キーとして持つ場合、各Imagesオブジェクトはuser_idパラメータを持ちます。あなたが実行することはできません残念ながら

Images.objects.get(user=User.objects.get(username=username)) 

、:あなたの代わりにuser_idusernameを持っている場合は、あなたのような何かを行うことができます

Images.objects.get(user_id=given_user_id) 

:あなたはgiven_user_idと呼ばれる値を持っている場合はそのため、あなたのような何かを行うことができますテンプレートブロック内でクエリを実行します。コンテキストオブジェクトをレンダリング関数に渡す前に、クエリを実行する必要があります。

+0

答えをありがとう!それも機能するはずです。しかし、もし私が "username"変数を持っていなければどうでしょうか?インデックスでは、所有者に関係なく、すべての画像を単純にリストしています。 – Bob

+0

理想的には、各画像にはそれに関連付けられたUserオブジェクトが必要です。あなたは潜在的に、画像をユーザ/ユーザ名にマッピングし、それをコンテキストオブジェクトに追加するdictオブジェクトを作成することができます。あるいは、あなたが 'image.user.username'を試してみることもできます。私の頭の上から離れても、それを撮るのかどうかは分かりません。 –

+0

ああ、ありがとう!私は将来それを試してみよう! – Bob

関連する問題