我有一个关于 Django 灼热的问题,我无法弄清楚。我有两个模型:
class Category(models.Model):
parent = models.ForeignKey('self', blank=True, null=True)
title = models.CharField(max_length=100)
slug = models.CharField(max_length=100)
unique_id = models.IntegerField(blank=True, null=True)
class Post(models.Model):
title = models.CharField(max_length=200)
category = models.ForeignKey(Category, related_name='maincategory')
subcategory = models.ForeignKey(Category, related_name='subcategory')
subsubcategory = models.ForeignKey(Category, related_name='subsubcategory')
我的搜索查询如下所示:/?categories=slug1-slug2-slug3-slug4-slug5,所以我用 Python 像这样拆分它:
categories = request.GET.get('categories', '').split('-')
为了实现我的目标,我可能不得不重建我的模型,所以这就是我需要你帮助的地方。
首先,我搜索主类别中的所有帖子:
posts = Post.object.filter(main_category=main_category) #Main category is the first element i categories
类别列表(?categories=slug1-slug2-slug3)既可以是子类别,也可以是子子类别。
那么如何先过滤 slug2 上的帖子,然后再过滤 slug3 上的帖子呢?
我现在发生的事情是,当我过滤 slug2 时,没有帖子可以过滤 slug3。所以我想我必须循环通过蛞蝓,然后加入结果?
不确定这是否有效,但 Q 查询是我探索的方式。
from django.db.models import Q
categories = request.GET.get('categories', '').split('-')
posts = Post.object.filter(
Q(category__slug__in=categories) |
Q(subcategory__slug__in=categories) |
Q(subsubcategory__slug__in=categories))