gpt4 book ai didi

python - 为我的 tastypi 资源构建自定义过滤器

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:08 25 4
gpt4 key购买 nike

我有这个工作代码可以从我在测试网址使用普通 GET 请求进行测试的列表中过滤出来:

tag_list = request.GET.get('tag_list').split('&')
tags = Tag.objects.all()

all_species = Species.objects.all()
filtered_species = [all_species.filter(tags__description=c) for c in tag_list]
species = reduce(and_, filtered_species, all_species)

请求将如下所示:

/?tag_list=winged fruit&latex present&foo&bar

如何或在何处将其作为自定义过滤器添加到我的 api 资源中?

最佳答案

大家好,我们又在#tastypie 上见面了。

这是一个感兴趣的问题,将在这里再次回答它可能对其他人有用。

首先,您的网址应采用以下形式:

/?tag_list=winged%20fruit&tag_list=latex%20present&tag_list=foo&tag_list=bar

然后,要在请求中访问您的 tag_list,您必须使用特殊方法 getlist:

request.GET.getlist('tag_list')

编辑:

我会以这种方式实现查询,但这个解决方案可能可以改进:

tag_phrases = request.GET.getlist('tag_list')

# Create OR query based on `tag_phrases`
query = Q(tags__description=tag_phrases[0])
for index, tag_phrase in tag_phrases:
if index == 0:
continue
query |= Q(tags__description=tag_phrase)

species = Species.objects.filter(query)
# Some of species might be duplicated
species = set(species)

关于python - 为我的 tastypi 资源构建自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com