Bonjour,

Je débute avec Django et tente de comprendre ses rouages...
Je tente de faire un simple blog pour m’entraîner où les articles (classe Post) sont reliés par une foreign key (OneToOne) à une classe ImageLibrary. Le but et de faire à la manière de wordpress avec son image à la une qu'on peut mettre sur les articles.
Le problème est que dans mon template, je ne sais pas comment afficher les champs de ma classe ImageLibrary !!
Un peu de code pour agrémenter :

Classe Post :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding: utf-8 -*-
from django.db import models
from django.core.urlresolvers import reverse
from tinymce.models import HTMLField # Bibliothèque django-tinymce
 
from blog.models.library import ImageLibrary
 
class Post(models.Model):    
    title = models.CharField(max_length=255)
    slug = models.SlugField(unique=True, max_length=255)
    description = models.TextField()
    image = models.OneToOneField(ImageLibrary)
    content = HTMLField()
    published = models.BooleanField(default=True)
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now_add=True)
 
    class Meta:
        app_label = "blog"
        ordering = ['-created']
 
    def __unicode__(self):
        return u'%s' % self.title
 
    def get_absolute_url(self):
        return reverse('blog.views.posts.view', args=[self.slug])
Classe ImageLibrary :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# -*- coding: utf-8 -*-
from django.db import models
 
class ImageLibrary(models.Model):
    title = models.CharField(max_length=255)
    alternative = models.CharField(max_length=255)
    image = models.ImageField(upload_to="images/")
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now_add=True)
 
    class Meta:
        app_label = "blog"
        ordering = ['-created']
 
    def __unicode__(self):
        return u'%s' % self.title
La View de Post :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
 
from django.shortcuts import render, get_object_or_404
from blog.models import Post
 
def index(request):
    posts = Post.objects.filter(published=True)
    return render(request, 'posts/index.html', {'posts': posts})
 
def view(request, slug):
	posts = Post.objects.all()
	post = get_object_or_404(Post, slug=slug)
	return render(request, 'posts/post.html', {'post': post, 'posts': posts})
Le template de post (l'index) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
{% extends 'base.html' %}
{% block content %}
<div class="row">
	{% for post in posts %}
	<div class="span4">
		<p><a href="{{post.get_absolute_url}}"><img src="{{ MEDIA_URL }}{{ post.image }}"/></a></p>
		<h2><a href="{{post.get_absolute_url}}">{{post.title}}</a></h2>
		<p>{{post.description}}</p>
	</div>
	{% endfor %}
</div>
{% endblock %}
Je veux en fait ne pas afficher l'id de l'imagemais son URL ({{ MEDIA_URL }}{{ post.image }})

Je suis aussi preneur de conseils !

Merci