IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django, foreign key dans template


Sujet :

Django Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 93
    Points : 63
    Points
    63
    Par défaut Django, foreign key dans template
    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

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 93
    Points : 63
    Points
    63
    Par défaut
    Résolu !

    Il suffit simplement dans la vue d'écrire

    Où post est l'objet, image (le 1er) est la clé étrangère de l'objet Post et image (le 2em) est le nom de la variable de classe dans l'objet en relation.

    C'était vraiment tout simple

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] Hyperlien vers les foreign key dans les tables
    Par Maze45 dans le forum Symfony
    Réponses: 2
    Dernier message: 08/07/2011, 08h59
  2. Réponses: 4
    Dernier message: 11/03/2011, 17h04
  3. Réponses: 1
    Dernier message: 08/07/2008, 10h46
  4. foreign key dans phpmyadmin
    Par elekis dans le forum Requêtes
    Réponses: 7
    Dernier message: 10/12/2005, 15h21
  5. foreign key dans mysql
    Par guillevin dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 08/04/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo