Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在函数filter()中生成多个筛选器(Django)_Python_Django_Django Models_Django Views - Fatal编程技术网

Python 在函数filter()中生成多个筛选器(Django)

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

我想做的是使用多个值来过滤数据。 我希望ResourcePost对象具有
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')
因为查询是在数据库端执行的,所以不能将函数转换为查询