Pytho Django Html - Нужна функция для создания фильтра выбора models.py
Создайте приложение для блога python django. Пользователь, создавая новую статью, может выбрать тип категории статьи, и она сохраняется в базе данных. Мне нужно создать несколько функций (или только одну) в view.py, которые фильтруют по категориям, приходящим из models.py. Для того, чтобы отобразить их с помощью html (front end) и показать только статьи (например, "Action") Вот что я пробовал до сих пор:<<<5><5>>>>
view.py
def sports(request):
category = Post.objects.all()
if category == sports:
print(list(Post.category))
return render(request, "sports.html", {"category":category})
Models.py
from django.db import models
from django.contrib.auth.models import User
from ckeditor.fields import RichTextField
STATUS_CHOICES = [
('Action', 'Action'),('Adventure', 'Adventure'),
('Science Fiction', 'Science Fiction'), ('Sports', 'Sports'),
('Thriller', 'Thriller'), ('Shounen', 'Shounen'),('Fantasy', 'Fantasy')
]
class Post(models.Model):
anime_name = models.CharField(max_length=80, verbose_name='Título')
sub_name = models.CharField(max_length=100, verbose_name='Subtitulo')
content = RichTextField(max_length=5000, verbose_name='Contenido')
created_at = models.DateTimeField(auto_now_add=True)
published_at = models.DateField(null=True, blank=True, verbose_name='Fecha de publicación')
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Autor')
photo = models.ImageField(upload_to='/media/images/',default='/images/no_image.jpg', null=True, verbose_name='Foto')
category = models.CharField(max_length=20, choices=STATUS_CHOICES)
def __str__(self):
return f'Autor: {self.user.username} -- Titulo: {self.anime_name} -- Contenido: {self.content[:(42 - (len(self.anime_name) - 4))]} -- Fecha de publicacion: {self.published_at}'
class Meta:
db_table = 'posts'
verbose_name = 'post'
verbose_name_plural = 'posts'
ordering = ['-published_at']
forms.py
from django import forms
from .models import Post, Comment
class NewPost(forms.ModelForm):
class Meta:
model = Post
fields = ('anime_name','sub_name','content','user', 'photo', 'published_at','category')
widgets = {'content': forms.Textarea(attrs={'required': True, 'cols': 80}),
'photo': forms.FileInput(),
'published_at': forms.DateInput(attrs={'type': 'date'})}
HTML
<div class="card mb-4">
<div class="card-header">Categories</div>
<div class="card-body">
<div class="row">
<div class="col-sm-6">
<ul class="list-unstyled mb-0">
<li><a href="#!">Action</a></li>
<li><a href="#!">Shounen</a></li>
<li><a href="#!">Fantasy</a></li>
<li><a href="#!">Thriller</a></li>
<li><a href="#!">Science Fiction</a></li>
<li><a href="#!">Sports</a></li>
<li><a href="#!">Adventure</a></li>
</ul>
</div>
</div>
</div>
<<<0><0>> Мне нужно, чтобы при выборе любой из этих категорий можно было перейти к статьям, соответствующим этим категориям <<1><1>>.
<<<0><0>Если вам нужен еще какой-либо код, дайте мне знать.
Большое спасибо <<<1><1>>>