首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用多个筛选器查询表

尝试使用多个筛选器查询表
EN

Stack Overflow用户
提问于 2013-12-03 21:26:57
回答 1查看 52关注 0票数 2

我试图添加功能,这样用户就可以为我的站点(SDK)上的一组项目选择多个浏览过滤器。我所拥有的代码返回与任何筛选标记匹配的SDK。如何只显示匹配所有标记的SDK?

代码语言:javascript
运行
复制
models.py

class AppSdks(models.Model):
    sdk_name = models.CharField(max_length=256)
    sdk_type = models.CharField(max_length=256)
    company_url = models.URLField(max_length=1024)
    logo = models.URLField(max_length=1024)
    description = models.TextField()
    ios = models.BooleanField()
    android = models.BooleanField()


class AppSdksTags(models.Model):
    sdk = models.ForeignKey(AppSdks)
    tag = models.CharField(max_length=128)

views.py
if request.method=="POST":
    all_tags = request.POST.getlist('filter_tags')
    for each_sdk in sdks:

    results=[]
    sdk_list=[]
    sdks = AppSdks.objects.all()
    for each_tag in all_tags:
        sdks = AppSdksTags.objects.filter(tag=each_tag).values_list('sdk',flat=True).distinct()
        for each_sdk in sdks:
            if each_sdk not in sdk_list:
                sdk_list.append(each_sdk)
    for each_sdk in sdk_list:
        sdk = AppSdks.objects.get(id=each_sdk)
        results.append(sdk)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-03 21:58:39

连续filter子句。

代码语言:javascript
运行
复制
sdks = AppSdks.objects.all()
for each_tag in all_tags:
    sdks = sdks.filter(appsdkstags__tag=each_tag)

这将以一个查询集结束,其中每个AppSdks实例都有所有所需的标记。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20362012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档