В файле views.py ==> category_posts = Post.object.filter(category=cat) возвращает пустой набор запросов. Модель 'Post' содержит примеры постов с категориями
Я создаю приложение для блога на django и столкнулся с необычной проблемой. Я не могу отфильтровать и отобразить записи блога по категориям. Пожалуйста, приведите мой код ниже. Заранее спасибо. Я потратил два полных дня, пытаясь разобраться в этом, и все еще ничего не добился.
MODELS.py
Это модель, которую я создал для статьи в блоге.
class Post(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField()
post_date = models.DateField(auto_now_add=True)
category = models.CharField(max_length=255, default="uncategorized")
def __str__(self):
return self.title + ' | ' + str(self.author)
def get_absolute_url(self):
#return reverse('article-detail', args=(str(self.id)))
return reverse('homepage')
VIEWS.py
Вот представление, которое я создал для категории постов блога.
def CategoryView(request,cat):
category_posts = Post.objects.filter(category=cat)
return render(request,'categories.html',{'category_posts':category_posts})
URLS.py
Файл urls.py.
path('category/<str:cat>/', CategoryView, name = 'category'),
CATEGORIES.html
Это будет последняя страница отображения, где category_posts отображается как пустой queryset. Цикл for не может быть запущен, потому что category_posts является пустым набором запросов. Однословные категории также пусты (чтобы исключить проблему со slugify)
{% extends 'base.html' %}
{% load static %}
{% block content %}
<ul>
{% for post in category_posts %}
<li>
<div class="category">
<a href="{% url 'category' post.category|slugify %}">{{ post.category }}</a>
</div>
<a href="{% url 'article-detail' post.pk %}">
<h3><b>{{ post.title }} </b></h3>
<p class=card-date>
<big>{{ post.author }}</big>
<small>-{{ post.post_date }}</small>
</p>
<p class="excerpt-text">{{ post.body | slice:"100" |safe}}</p>
<div class="article-thumbnail">
<img src="{% static "images/bg.png" %}" alt="article-thumbnail" >
</div>
<div class="overlay">
</a>
</li>
{% endfor %}
{% endblock %}