0

我正在学习 Django,并试图根据数据库表过滤名称:power_id. 无论如何要根据 offpower_id或数据库中的任何变量进行过滤?这是我到目前为止所拥有的。注意,我正在使用 Twitter-Bootstrap

这是团队视图

<div class="accordion-inner">
    <ul>
        {% if User.object.power_id == 1 %}
            <li>
                <a href="#">
                {{ user }}
                </a>
            </li>
        {% endif %}
    </ul>
</div>

可以说,1 是管理员。

这是我的views.py:

# Home view
class home(generic.ListView):
    template_name = 'users/home.html'
    context_object_name = 'User_list'
    context_object_name2 = 'Power_list'

    def get_queryset(self):
        return User.objects.order_by('username')

# Team view
class team(generic.ListView):
    template_name = 'users/team.html'
    context_object_name = 'User_list'

    def get_queryset(self):
        return User.objects.order_by('username')

    context_object_name2 = 'Power_list' 
    def in_catagory(User, Admin):
        return things.filter(Admin=Admin)
4

3 回答 3

0

您可以覆盖该get_context_data方法以添加该其他变量。

class TeamView(ListView):
    template_name = 'users/team.html'
    context_object_name = 'User_list'
    model = User # You never set the model

    def get_queryset(self):
        return super('TeamView', self).get_queryset().order_by('username') # call the parent function

    def get_context_data(self, *args, **kwargs):
        context = super('TeamView', self).get_context_data(*args, **kwargs)
        context['Power_list'] = self.get_queryset().filter(power_id=1)
        return context

现在您还有一个上下文变量,其中包含您可以迭代Power_list的所有用户power_id == 1

<div class="accordion-inner">
    <ul>
        {% for user in Power_list %}
            <li>
                <a href="#">
                {{ user }}
                </a>
            </li>
        {% endfor %}
    </ul>
</div>
于 2013-07-19T16:33:10.583 回答
0

据我所知,您已经传入了一个您创建的名为User. 现在,我不知道这是您实际创建的模型还是您正在使用django.contrib.auth.models.User. 但是,这是向您展示如何在 django 中使用视图的尝试。

from django.views.generic import View
from django.shortcuts import render
from .models import User


class TeamView(View):

    def get(self, request):

        Users = User.objects.filter(power_id='123')
        return render(request, 'something.html', {'Users': Users, })

我在这里所做的可能看起来很吓人,但实际上很简单。据我了解,您有一群用户,其属性名为power_id. 而你想要得到它,你需要过滤你所有的用户以获得power_id你想要的用户。

这就是get函数调用后的第一行所做的。函数调用在get这里是因为当您向页面发送请求时,例如www.google.com,您正在发送get请求。

现在,该render函数是一个快捷函数。它的作用是这样的:第一个参数是 always request,第二个参数是您希望它呈现的 html 文件,第三个参数是您发送的信息,它是一个字典。

现在来到你的模板。您可以简单地遍历所有用户,如下所示:

<div class="accordion-inner">
    <ul>
        {% for user in Users %}
            <li>
                <a href="#">
                {{ user }}
                </a>
            </li>
        {% endfor %}
    </ul>
</div>
于 2013-07-19T16:09:50.020 回答
-2

我已经找到了我自己的问题的答案。事实证明,它比我想象的要简单得多。我需要的是重新安排代码,以及正确设置变量。

<div class="accordion-inner">
    <ul>
        {% for name in User_list %}
            {% if name.power_id == 1 %}
                    <a href="#">{{ name }}</a><br />
                    {% endif %}
            {% endfor %}
    </ul>
</div>

views.py 文件根本不需要编辑。

于 2013-07-19T16:14:06.143 回答