我有一个关于用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。所以我想我必须遍历slugs,然后加入结果?
答案 0 :(得分:1)
不确定这是否有效,但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))