Django 带变量的模型方法
我有以下从模板中获取“q”值的视图:Django 带变量的模型方法,django,django-models,Django,Django Models,我有以下从模板中获取“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
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')
根本不清楚你想在这里做什么。在函数中,您将根据GET变量
q
的值进行过滤。但是在管理器中,您在字符串上进行过滤“q”
您是否只想将q
的值传递给管理器?如果是这样,最简单的方法是定义一个单独的管理器方法:
class MemoryManager(models.Manager):
def filter_server(q):
return self.get_query_set().filter(server=q)
现在您可以调用
Server.memsinserver.filter\u Server(q)
。这就是您想要的吗?是否将MemoryManager设置为服务器模型中的主管理器(例如,“objects=MemoryManager”)?您必须修改get_query_set以接受参数,一个参数(q)或一组参数。为什么不在管理器上为这些调用创建一个单独的方法呢?不,这是第二个方法:#1 objects=models.manager()#2 memsinserver=MemoryManager()是的,这正是我想要的。