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を取得しています。
そのテンプレートには「article」とは何ですか?あなたは 'post'を意味しますか?実際のコードを表示してください。 –
はい、私はそれがあなたがforループで呼んだものと違いが生じたとは思わなかったのですか?謝罪私はこれに新しいです - あなたは '本当のコード'を明確にすることはできますか?ありがとう –
ああ申し訳ありませんが、私はforループに気付かなかった。はい、もちろんあなたは正しいです、それはあなたが何と呼んでも関係ありません。 –