Saya memiliki proyek blog berikut:

model.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)

template 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 %}

Saya memiliki tiga posting, yang semuanya ditampilkan dengan benar, tapi

{{article.categories}} memberi saya:

posts.Category.None

{{article.categories.all}} memberi saya

QuerySet [<Category: Diving>]

Dan loop kedua menampilkan daftar semua kategori, yang saya harapkan hanya sebagai uji coba:

Kit & Packing Diving Places Tips Private

Saya mencoba menarik melalui nama kategori untuk setiap posting, yang telah dipilih di panel admin dan disimpan melalui panel admin.

Saya telah mencoba apa yang terasa seperti seribu saran berbeda, seperti mengubah tampilan ke kategori = post.category_set.all(), dan telah meneliti ini selama berhari-hari sekarang, tetapi saya tidak mendapatkan apa-apa.

0
David M 13 November 2017, 21:40

1 menjawab

Jawaban Terbaik

Anda sudah memiliki jawaban yang benar; article.categories.all, yang harus Anda ulangi.

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

Anda tidak memerlukan nilai categories dalam tampilan sama sekali.

1
Daniel Roseman 13 November 2017, 19:01