2016-09-25 22 views
1

我创建了一个简单的Django视图,假设从我的模型中打印出名称字段列表。我在User模型中创建了一个函数来查询名称,并将其附加到列表中,然后返回该名称。我想在视图类中调用该函数,并将该列表作为上下文传递,以便在模板中使用它。Django:如果我正在使用model.py中的函数,那么我在view.py中以self身份传递什么?

下面是我目前的代码。我不确定当我试图在views.py中调用它时,我认为自己是什么。当我尝试传递我的模型名称,这是用户,它不起作用。那么,我认为自己在views.py中究竟是什么呢?在此先感谢:d

用户models.py

def query_choice(self,query_choice): 
    users_first_name = self.objects.values_list(query_choice) 
    names = [] 
    for u in users_first_name: 
     names.append(u) 
    return names 

views.py

def login(request): 
    users_first_name = User.query_name(*self*,'first_name') 
    template = loader.get_template('registration/home.html') 
    context = { 
     'output': users_first_name, 
    } 
    #return HttpResponse(output) 
    return HttpResponse(template.render(context,request)) 
+0

注意:您可以在平板= TRUE,参数传递到values_list那么你函数变成一行长 – Sayse

回答

1

你应该定义为query_choice使用@classmethod装饰模型中的一类方法:

@classmethod 
def query_choice(cls, query_choice): 
    return cls.objects.values_list(query_choice, flat=True) 

然后你可以这样称呼它:

names = User.query_choice("first_name") 

通过他们的方式,你可以使用render保存自己装模板的一塌糊涂,然后使其等:

from django.shortcuts import render 

def login(request): 
    names = User.query_choice("first_name") 
    return render(request, "registration/home.html", {"output": names}) 
+0

好的,谢谢你的提示。我将从现在开始使用它 –

相关问题