2017-11-13 20 views
0

I以下のブログのプロジェクトがあります。アクセス多対多Djangoテンプレート内のフィールド

models.py:

from django.db import models 
from django.utils import timezone 

class Post(models.Model): 
    title = models.CharField(max_length=200) 
    body = models.TextField() 
    pub_date = models.DateTimeField(default=timezone.now) 
    categories = models.ManyToManyField('Category') 

    def __str__(self): 
     return self.title 

class Category(models.Model): 
    title = models.CharField(max_length=200) 

    def __str__(self): 
     return self.title 

    # Change the name in Admin from categorys to categories 
    class Meta: 
     verbose_name_plural = "categories" 

views.py:

from django.shortcuts import render 
from .models import Post, Category, Comment 

def getPosts(request): 

    posting = Post.objects.all().order_by('-pub_date') 
    categories = Category.objects.all() 

    context = { 
     'posting':posting, 
     'categories':categories, 
       } 
    return render(request, 'posts/getPosts.html', context) 

getPosts.htmlテンプレート:

{% if posting %} 
     {% for article in posting %} 
      <h3>{{article.title}}</h3> 
      <ul>{{article.body}}</ul> 
      <ul>Posted : {{article.pub_date}}</ul> 

      <ul> 
       <em>Found in category : </em> 

       {{ article.categories }} 
       {{ article.categories.all }} 
       {% for category in categories %} 
        {{category.title}} 
       {% endfor %} 
      </ul> 
     {% endfor %} 
    {% endif %} 

私はそのすべて正しく表示、しかし、3件の投稿があり

{{article.categories}}は私に与えている:

posts.Category.None 

{ {article.categories.all}}私には

QuerySet [<Category: Diving>] 

そして、第二のループは、私はちょうどテスト実行として期待されるすべてのカテゴリのリストを、出力:

Kit & Packing Diving Places Tips Private 

私は単に管理パネルで選択されている各ポストのためのカテゴリ名を介して、プルしようとしています管理パネルから保存されます。

私は、ビューをcategory = post.category_set.all()に変更するなど、何千もの異なる提案があるように感じましたが、これを数日前から調べていますが、no-whereを取得しています。

+0

そのテンプレートには「article」とは何ですか?あなたは 'post'を意味しますか?実際のコードを表示してください。 –

+0

はい、私はそれがあなたがforループで呼んだものと違いが生じたとは思わなかったのですか?謝罪私はこれに新しいです - あなたは '本当のコード'を明確にすることはできますか?ありがとう –

+0

ああ申し訳ありませんが、私はforループに気付かなかった。はい、もちろんあなたは正しいです、それはあなたが何と呼んでも関係ありません。 –

答えて

0

あなたはすでに正しい答えを持っています。 article.categories.all、これをループする必要があります。

{% for category in article.categories.all %} 
    {{category.title}} 
{% endfor %} 

ビュー内には、値categoriesはまったく必要ありません。

+0

素晴らしいダニエルありがとう! –

関連する問題