我创建了一个简单的Django视图,假设从我的模型中打印出名称字段列表。我在User模型中创建了一个函数来查询名称,并将其附加到列表中,然后返回。我想在我的视图类中调用此函数,并将该列表作为上下文传递,以便我可以在我的模板中使用它。
以下是我目前的代码。当我试图在views.py中调用它时,我不确定自我是什么意思。当我尝试传入我的模型名称(即User)时,它无效。那么自我假设究竟是在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 :(得分:1)
您应该在模型中使用@classmethod
装饰器将query_choice
定义为类方法:
@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})