gpt4 book ai didi

python - Django 将 Q 对象与 order_by 结合起来

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:34 26 4
gpt4 key购买 nike

我试图在名为 get_filters 的函数中抽象出表单 SearchForm(forms.Form) 的所有过滤逻辑。

get_filters 返回一个 Q 对象,然后 View 使用该对象来过滤实际的查询集。因此,get_filters也不能知道有关查询集的任何信息:它的工作只是返回一个可以传递给 .filter 的过滤器()

views.py:

def my_view(request):
form = SearchForm(request.GET)

if form.is_valid():
filters = form.get_filters()
Model.objects.filter(filters)

表单.py:

class SearchForm(forms.Form):
"""
Fields...
"""
def get_filters(self):
"""
filtering logic
"""
return Q(some_filters)

这很好用。但是,我现在需要一个“order by”字段。

我可以使用 get_filters 函数中的 Q 对象来做到这一点吗?或者我除了打破这种编程模式并在 View 中访问 form.cleaned_data 之外别无选择?

最佳答案

你可以让 View 来代替 get_filter 执行 order_by 操作吗?

from my_app.models import Project
filters = get_filters(form)
ps = Project.objects.order_by('name').filter(filters)

关于python - Django 将 Q 对象与 order_by 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763993/

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