2011-05-13 6 views
2

J'ai mis en place quelques modèles comme suit:plusieurs à plusieurs dans Django

page

Galerie

image

Galerie et l'image partagent une relation plusieurs à plusieurs.

La page peut avoir 1 ou 0 galeries.

J'ai créé une galerie avec quelques images et l'ai attachée à un objet de page.

Cependant, j'ai des problèmes pour l'afficher dans un modèle.

Quelqu'un peut-il aider?

Ma page vue ressemble à ceci:

def detail(request, page_id): 
p = get_object_or_404(Page, pk=page_id) 
return render_to_response('page/detail.html', {'page': p}, 
         context_instance=RequestContext(request)) 

Et le modèle:

{% block images %} 
{% if page.gallery %} 
{% for image in page.gallery.image_set.all %} 
<a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a> 
{% endfor %} 
{% endif %} 
{% endblock %}` 

Si j'essaie de sortie du texte dans le bloc s'il sort OK, mais pas dans la boucle.

Un conseil pour le faire fonctionner/ranger cela serait grandement apprécié.

Merci.

Répondre

4

Si la relation Gallery-Image est beaucoup à beaucoup je suppose que vous avez un champ m2m sur votre modèle Gallery, où le gestionnaire m2m est le champ lui-même. Le gestionnaire peut être interrogé comme n'importe quel autre QuerySet: model_instance.mym2mfield.filter().

Si votre ManyToManyField est appelé images sur le modèle Gallery, votre modèle ressemblerait à ceci:

{% for image in page.gallery.images.all %} 
    <a rel="gallery" href="{{ STATIC_URL }}{{ image.image }}"></a> 
{% endfor %} 

Si votre ManyToManyField est sur votre modèle Image, le nom par défaut serait que vous décrivez, à moins que vous avez spécifié un related_name auquel cas vous utiliseriez ce nom.

{% for image in page.gallery.image_set.all %} 
1

Votre problème peut provenir de la façon dont vous accédez à la galerie à partir de la page. Dans votre modèle, essayez quelque chose comme ce qui suit et voir si vous obtenez une sortie:

{{ page.gallery }} 

Il y a des cas où certaines erreurs peuvent être ainsi ignorés dans un modèle.

En outre, je suis un peu curieux de savoir comment votre page et votre galerie sont liées? Le modèle Page a-t-il un OneToOneField appelé "gallery"? Est-ce que Gallery a un ForeignKey à la page? Dans ce dernier cas, vous accédez aux galeries associées à une page par:

{{ page.gallery_set.all }} 

Il serait plus facile de répondre à cette question si vous avez fourni des informations supplémentaires sur les champs de vos modèles.

Questions connexes