变量模型方法

时间:2010-01-14 19:52:15

标签: 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:
            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')

1 个答案:

答案 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)。那是你想要的吗?