2009-12-07 5 views
4

que je dois faire quelque chose commeModèle Django en premier?

{{ article.product.images.first.image.url }} 

Dans mon modèle, mais il n'y a pas « d'abord » (images est un RelatedManager pour lequel j'ai trouvé très peu de documentation).

Existe-t-il une autre façon de procéder? Je peux obtenir le premier modèle avec

{{ article.product.images.get_query_set|first }} 

Mais alors j'ai besoin de creuser quelques propriétés plus profondes, et cela ne fonctionne pas.


Si elle aide, mon modèle d'image ressemble à ceci:

class ComponentImage(models.Model): 
    component = models.ForeignKey(Component, related_name='images') 
    image = models.ImageField(upload_to='uploads') 

Et article.product est un Component.

Répondre

11

Que diriez-vous de {{article.product.images.all.0.image.url}}?

Ceci est identique à l'expression python article.product.images.all[0].image.url.

Une autre option est d'ajouter une méthode au modèle de produit qui retourne images[0].image.url

+1

Genius! Je pensais à la façon dont je pouvais accéder à '[0]' mais je n'étais pas sûr de la syntaxe appropriée. Vous avez également besoin d'un '.all.', comme' {{article.product.images.all.0.image.url}} 'pour le faire fonctionner. – mpen