2009-08-05 16 views
3

おはようすべて、Djangoの多対多のテンプレートの質問

は、私はかなりの時間のためのPHPプログラマーしてきたが、私は、Pythonの方向と何ジャンゴで遊んよりはましだ方がより移動する必要性を感じていました。

私は簡単な解決策があることを知っている停止地点に来ていますが、私はそれを見逃しています - どのように多くの関係をDjangoテンプレートに表示しますか?

私のDjangoのモデル:(フィールドのほとんどが削除されている)

class Category(models.Model): 
    name = models.CharField(max_length=125) 
    slug = models.SlugField() 
categories = models.ManyToManyField(Category, blank=True, null=True) 

class Recipe(models.Model): 
    title = models.CharField('Title', max_length=250) 
    slug = models.SlugField() 

class Photo(models.Model): 
    recipe = models.ForeignKey(Recipe) 
    image = models.ImageField(upload_to="images/recipes", blank=True) 

だから、私はと呼ばれる自分のアプリケーションで使用している基本的なモデルであり、「レシピ。」

    どのように私はそれの詳細ページ上のレシピのためのカテゴリを表示するに行くか
  1. :そうは言って
    は、私が答えを探しています二つの質問がありますか?
  2. レシピの画像を詳細ページに表示するにはどうすればいいですか?
私はPythonシェルに行けば

、および入力以下、私は結果を得る操作を行います。

>>> photos = Photo.objects.filter(recipe=1) 
>>> photos 
[<Photo: Awesome Pasta>] 
>>> for photo in photos: 
...  print "Photo: %s" % photo.logo 
... 
Photo: images/recipes/2550298482_46729d51af__.jpg 

をしかし、私は私のテンプレートでは、次のような何かをしようとしたとき、私は "というエラーを取得します無効なブロックタグ: 'photo.image'。 "

{% for photo in photos %} 
{% photo.image %} 
{% endfor %} 

でも、IDがまだ表示されていないにもかかわらず、各レシピでこのダイナミックを使用するにはどうしますか?

詳細ページView.pyはスニペット:おそらく、あなたのすべてに非常に単純な質問ですが何のための助けと理解のために事前に

def details(request, slug='0'): 
    p = get_object_or_404(Recipe, slug=slug) 
    photos = Photo.objects.filter(recipe=1) 
    return render_to_response('recipes/recipes_detail.html', {'p': p, 'photos': photos}) 

感謝を!

更新:モデルの追加フィールドを削除するときに、レシピモデルのカテゴリフィールドを忘れてしまった。

{% photo.image %} 

は、代わりに次のようになります:

{{ photo.image }} 

{% %}表記は、Djangoのテンプレートタグのために使用されている。私が見ることができるものから、

+0

タイトルにManyToManyが記載されていても、実際に定義されたManyToManyフィールドは表示されません。 – Powerlord

+0

"recipe = models.ForeignKey(Recipe)"は技術的に多対多の関係ではありませんか?そうでない場合、私は使用されている言語を謝罪し、喜んでそれを変更します。 – Oubipaws

+0

@ R。 Bemrose - 私の申し訳ありません、カテゴリフィールドは特にManyToManyフィールドでした。 – Oubipaws

答えて

3

は、私はあなたが小さな構文エラーを持っていると思います一方、変数は{{ }}表記で表されます。

Photoモデルの外部キーがRecipeであることを利用して、動的にすることができます。

def details(request, slug='0'): 
    p = get_object_or_404(Recipe, slug=slug) 
    photos = p.photo_set.all() 

うまくいけば、あなたのために動作します:これは、あなたが戻って写真のセットにスラグを使用してロードされましたRecipeインスタンスからの逆関係が存在することを意味します。あなたがDjangoでの作業を楽しんでいるのを見てうれしい!

+0

ご協力ありがとうございました。私のページにはイメージがあります。 – Oubipaws

関連する問題