Модели
from django.db import models
from django.urls import reverse
class Category(models.Model):
title = models.CharField(max_length=255, verbose_name='Название')
slug = models.SlugField(max_length=255, verbose_name='URL_Категории', unique=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('category', kwargs={"slug": self.slug})
class Meta:
ordering = ['title']
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
class Post(models.Model):
title = models.CharField(max_length=255, verbose_name='Название')
descriptions = models.CharField (default='Some descriptions',max_length= 150,verbose_name='Короткое описание')
slug = models.SlugField(max_length=255, verbose_name='URL_Поста', unique=True)
author = models.CharField(max_length=100, verbose_name='Автор')
content = models.TextField(blank=True,verbose_name='Контент')
created_at = models.DateTimeField(auto_now=True, verbose_name='Опубликована:')
photo = models.ImageField(upload_to='photo/%Y/%m/%d/',blank=True, verbose_name='Фото')
views = models.IntegerField(default=0, verbose_name='Количество просмотров:')
tags = models.ManyToManyField(Tag, blank=True, related_name='tags')
categories = models.ManyToManyField(Category, related_name='categories')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post', kwargs={"slug": self.slug})
class Meta:
ordering = ['-created_at']
verbose_name = 'Публикация'
verbose_name_plural = 'Публикации'
Вьюха
@register.inclusion_tag('blog/category_list.html')
def get_category_post ():
posts = (
Post.objects.prefetch_related('categories')
)
context = {
'posts': posts,
}
return (context)
Темплейт
{% for post in posts %}
<div class="row">
<div class="col-md-12">
<div class="section-title">
{% for category in post.categories.all %}
<h2 class="title"> {{category.title}} </h2>
{% endfor %}
</div>
</div>
<div class="col-md-4">
<div class="post post-sm">
{% if post.photo %}
<a class="post-img" href="{{ post.get_absolute_url }}"><img src="{{post.photo.url}}" alt="" class="mr-3"></a>
{% else %}
<a class="post-img" href="{{ post.get_absolute_url }}"><img src="https://picsum.photos/seed/picsum/350/300" alt="lalala" class="mr-3"></a>
{%endif%}
<div class="post-body">
<div class="post-category">
<a href="category.html">{{post.title}}</a>
</div>
<h3 class="post-title title-sm"><a href="{{ post.get_absolute_url }}">{{post.descriptions|safe}}</a></h3>
<ul class="post-meta">
<li><a href="author.html">{{ post.author }}</a></li>
<li>{{ post.created_at }}</li>
</ul>
</div>
</div>
</div>
<!-- /post -->
</div>
<!-- /row -->
{% endfor %}
На выходе получается что выводит категорию и связанный пост, а затем снова ту же категорию и другой связанный пост.
Не понимаю как сделать так чтобы все связанные посты выводились в одной категории