Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Django 带变量的模型方法_Django_Django Models - Fatal编程技术网

Django 带变量的模型方法

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

我有以下从模板中获取“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()是的,这正是我想要的。