2016-03-20 29 views
1

Bir sayfada bir blog hazırlamaya çalışıyorum: makaleler ve yorumlar aynı sayfada. Django'nun yabancı anahtarla nasıl çalıştığını anlamak.Django ve yabancı anahtar

Aslında, tüm makaleleri aynı sayfada görüntüleyebilirim, ancak her makalenin her bir makalesini nasıl görüntüleyeceğimi bilmiyorum çünkü iyi makale kimliğiyle ilişkili iyi yorumlar kimliğini nasıl alacağımı bilmiyorum.

model.py:

#-*- coding: utf-8 -*- 

from django.db import models 

# Create your models here. 
class Article(models.Model): 
    titre = models.CharField(max_length=100) 
    auteur = models.CharField(max_length=42) 
    contenu = models.TextField(null=True) 
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution") 

class Commentaire(models.Model): 
    auteur = models.CharField(max_length=42) 
    contenu = models.CharField(max_length=100) 
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution") 
    article = models.ForeignKey('Article') 

views.py:

#-*- coding: utf-8 -*- 

from django.shortcuts import render 
from django.http import HttpResponse 
from blog.models import Article, Commentaire 

# Create your views here. 
def actualite(request, id): 
    article = Article.objects.all() 
    commentaire_article = Commentaire.objects.filter(article=**ARTICLE ID ???**) 

    return render(request, 'blog/templates/home.html', locals()) 

şablon home.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<ul> 
    <h1>Liste des articles :</h1> 
    {% for article in article %} 
     <li> 
      Titre : {{ article.titre }}<br /> 
      Contenu : {{ article.contenu }}<br /> 
      Auteur : {{ article.auteur }}<br /> 
      Date : {{ article.date }}<br /> 
      Commentaire : 
      {% for commentaire_article in commentaire_article %} 
      <ul> 
       <li> 
        De : {{ commentaire_article.auteur }}<br /> 
        {{ commentaire_article.contenu|default:"Aucun commentaire" }} 
       </li> 
      </ul> 
      {% endfor %} 
     </li> 
     <hr> 
    {% endfor %} 
</ul> 
</body> 
</html> 

cevap

4

görünümü/şablonda commentaire_article eklemeye gerek yoktur . Her makalenin yorumlarına, geri ForeignKey numaralı telefonuna erişerek erişebilirsiniz.

Makalelerin yorumlarına article.commentaire_set.all() aracılığıyla ulaşabilirsiniz. Size göre

, hepinizin makaleleri listeleme çünkü görünümüne id geçme hiçbir faydası bakın bu

def actualite(request, id): 
    articles = Article.objects.all() 

    return render(request, 'blog/templates/home.html', {'articles': articles}) 

böyle bir şey yapmak. Yalnızca bir makale görüntülemek istiyorsanız, bunun yerine .get()'u kullanabilirsiniz.

Şablonunuzda, yorum yazmak için buna benzer bir şey yazın.

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<ul> 
    <h1>Liste des articles :</h1> 
    {% for article in articles %} 
     <li> 
      Titre : {{ article.titre }}<br /> 
      Contenu : {{ article.contenu }}<br /> 
      Auteur : {{ article.auteur }}<br /> 
      Date : {{ article.date }}<br /> 
      Commentaire : 
      {% for commentaire_article in article.commentaire_set.all %} 
      <ul> 
       <li> 
        De : {{ commentaire_article.auteur }}<br /> 
        {{ commentaire_article.contenu|default:"Aucun commentaire" }} 
       </li> 
      </ul> 
      {% endfor %} 
     </li> 
     <hr> 
    {% endfor %} 
</ul> 
</body> 
</html> 
İlgili konular