Python 在函数filter()中生成多个筛选器(Django)
我想做的是使用多个值来过滤数据。 我希望ResourcePost对象具有Python 在函数filter()中生成多个筛选器(Django),python,django,django-models,django-views,Python,Django,Django Models,Django Views,我想做的是使用多个值来过滤数据。 我希望ResourcePost对象具有resource\u category,其值为user.helpseekerprofile.rc1user.helpseekerprofile.rc2和user.helpseekerprofile.rc3。 所以我试着如下所示: def message_list_view(request): user = request.user def filter_watchlist(post): fi
resource\u category
,其值为user.helpseekerprofile.rc1
user.helpseekerprofile.rc2
和user.helpseekerprofile.rc3
。
所以我试着如下所示:
def message_list_view(request):
user = request.user
def filter_watchlist(post):
filtered = ResourcePost.objects.all().filter(resource_category=user.helpseekerprofile.rc_1)\
+ ResourcePost.objects.all().filter(resource_category=user.helpseekerprofile.rc_2)\
+ ResourcePost.objects.all().filter(resource_category=user.helpseekerprofile.rc_3)
if post in filtered:
return True
else:
return False
post_list = ResourcePost.objects.all().filter(filter_watchlist).order_by("-date_created")
page = request.GET.get("page", 1)
paginator = Paginator(post_list, 20)
try:
posts = paginator.page(page)
except PageNotAnInteger:
posts = paginator.page(1)
except EmptyPage:
posts = paginator.page(paginator.num_pages)
timestamp_now = datetime.datetime.now()
context = {
"mapbox_access_token": "pk." + os.environ.get("MAPBOX_KEY"),
"timestamp": timestamp_now,
"posts": posts,
}
return render(request, "donation/messages_home.html", context)
然而,TypeError
出来说“无法解包不可编辑的函数对象”。
如何解决此问题?您应该通过使用以下内容进行筛选来创建查询集:
helper = user.helpseekerprofile
post_list = ResourcePost.objects.filter(
resource_category__in=[helper.rc_1, helper.rc_2, helper.rc_3]
).order_by('-date_created')
helper=user.helpseekerprofile
post_list=ResourcePost.objects.filter(
resource_category_uuuin=[helper.rc_1,helper.rc_2,helper.rc_3]
).order_by('-date_created')
您不能使用以下通用函数进行筛选:
ResourcePost.objects.filter(filter_watchlist).order_by('-date_created')
ResourcePost.objects.filter(filter\u watchlist).order\u by('-date\u created')
因为查询是在数据库端执行的,所以不能将函数转换为查询