我有以下视图,它从模板中获取“q”的值:
from django.http import HttpResponse
from django.shortcuts import render_to_response
from GOTHAMWEB.GRID.models import *
def search(request):
errors = []
if 'q' in request.GET:
q = request.GET['q']
if not q:
errors.append('Enter a search term.')
elif len(q) > 20:
errors.append('Please enter at most 20 characters.')
else:
srvr = Server.objects.filter(name__icontains=q)
return render_to_response('search_results.html',
{'srvr': srvr, 'query': q})
return render_to_response('search_form.html',
{'errors': errors})
是否可以将q的值从视图传递给模型方法,例如下面的“server ='q'”。我试过这个但是失败了。在得出结论之前无法完成,有人请告诉我。
class MemoryManager(models.Manager):
def get_query_set(self):
return super(MemoryManager, self).get_query_set().filter(server='q')
答案 0 :(得分:0)
你在这里尝试做什么并不清楚。在函数中,您将过滤GET变量q
的值。但是在管理器中,您正在过滤字符串 "q"
。
您是否只想将q
的值传递给经理?如果是这样,最简单的方法是定义一个单独的Manager方法:
class MemoryManager(models.Manager):
def filter_server(q):
return self.get_query_set().filter(server=q)
现在您可以致电Server.memsinserver.filter_server(q)
。那是你想要的吗?