Python Django通过组合Q对象和顺序_
我试图在一个名为Python Django通过组合Q对象和顺序_,python,django,django-q,Python,Django,Django Q,我试图在一个名为get\u filters的函数中抽象表单SearchForm(forms.form)的所有过滤逻辑 get\u filters返回一个Q对象,然后视图使用该对象过滤实际查询集。因此,get\u filters不也不应该了解查询集:它的工作只是返回一个可以传递给.filter() views.py: def my_view(request): form = SearchForm(request.GET) if form.is_valid(): f
get\u filters
的函数中抽象表单SearchForm(forms.form)
的所有过滤逻辑
get\u filters
返回一个Q对象,然后视图使用该对象过滤实际查询集。因此,get\u filters
不也不应该了解查询集:它的工作只是返回一个可以传递给.filter()
views.py:
def my_view(request):
form = SearchForm(request.GET)
if form.is_valid():
filters = form.get_filters()
Model.objects.filter(filters)
forms.py:
class SearchForm(forms.Form):
"""
Fields...
"""
def get_filters(self):
"""
filtering logic
"""
return Q(some_filters)
这个很好用。但是,我现在需要一个“orderby”字段
我可以用
get\u filters
函数中的Q对象实现这一点吗?或者我除了打破这种编程模式并访问表单之外别无选择。在视图中清理数据
?而不是让过滤器执行命令,您能让视图执行吗
from my_app.models import Project
filters = get_filters(form)
ps = Project.objects.order_by('name').filter(filters)
问题真的是应该这样做吗?您已经标记了方法get filters,因此添加排序只会使该目标变得混乱