2012-06-15 10 views
11

数週間後、私はPythonとDjangoを学んでいます。この時点までに、他のユーザーの質問と回答を読むだけで十分でした。しかし、私の最初の質問の瞬間が来ました。Django:テンプレートを介してForeignKeyでデータを取得するにはどうすればいいですか?

私は可能な限り問題を説明しようとします。私の問題は、私は質問ができない、または私が望むデータを取得することです。

ForeignKeyによって関連付けられているクラスImageの最初のオブジェクトのURLを、EntryクラスにForeignKeyによって関連付けられているギャラリーに取得したいとします。ここで

これまでmodels.py:

class BlogEntry(models.Model): 
    ... 
    title = models.CharField(max_length=100) 
    ... 

class Gallery(models.Model): 
    entry = models.ForeignKey('BlogEntry') 

class Image(models.Model): 
    gallery = models.ForeignKey('Gallery') 
    picture = models.ImageField(upload_to='img') 

ビュー:

def view(request): 
    return render_to_response('mainview.html', { 
    'entryquery': BlogEntry.objects.all(), 
    } 
) 

テンプレート:

{% for item in entryquery %} 
    <h1>{{ item.title }}</h1> 
    <img src="{{ item.WHAT TO ENTER HERE? :) }}" /> 
{% endfor %} 

私が欲しいものは明らかでしょうか? 誰かが私を助け、可能な場合は簡単な説明を書くことができますか?

挨拶 バスティアン

答えて

14

することはできaccess related membersだけother attributes in a templateのような、あなたが何かを行うことができますので:item.gallery_set.all.0.image_set.all.0.picture.imgを。しかし、あなただけでitem.first_imageまたはあなたがして、外部キーにrelated_nameを追加することが必要であること

+0

あなたの素早い答え:)ありがとうございました。私はこのコード行を正確に理解していません。関連メンバーへのアクセスに関する文書へのリンクを教えてください。私はDjangoのドキュメントページで何かを見つけられませんでした。 – user1459531

+0

うん、それへのリンクを追加しました。希望が助けてくれる! – cberner

+0

ありがとう、ありがとう、ありがとう! :) – user1459531

0
class BlogEntry(models.Model): 
    ... 
    title = models.CharField(max_length=100) 
    ... 

class Gallery(models.Model): 
    entry = models.ForeignKey('BlogEntry',related_name="galleries") 

class Image(models.Model): 
    gallery = models.ForeignKey('Gallery',related_name='images') 
    picture = models.ImageField(upload_to='img') 

ような何かを行うことができるように、見上げて、適切な画像を返さBlogEntry上のメソッドを定義する方が簡単かもしれませんギャラリーモデルとテンプレートビュー:

{% for g in blogentry.galleries.all %} 
    {{g.name}} 
     {%for i in g.images.all %} 
      <img src="{{i.picture.url}}">{{i.picture}}</img> 
     {% endfor %} 
{% endfor %} 
関連する問題