我想在Django中只显示选定的年份数据

时间:2018-01-30 22:12:41

标签: django python-3.x django-templates

这里我放了我的代码文件,这样你就可以了解我的代码

在我的index.html

{% load tag %}

<body>

<select name="select_year">
<option>2017</option>
<option>2018</option>
<option>2019</option>
<option>2020</option>
</select>
</br>
</br>

<table border="1">
    <tr>
        <td>No</td>
        <td>Name</td>
        <td>DOB</td>
        <td>Year</td>
    </tr>

    {% for Manvi_User in ordering %}

    <tr>
        <td>{{forloop.counter}}</td>
        <td>{{ Manvi_User.first_name }}</td>
        <td>{{ Manvi_User.dob}}</td>
        <td>{{year|calculate_year:forloop.counter0}}</td>
    </tr>


    {% endfor %}
</table>

</body>

in vies.py

def index(request):
    all_user = Manvi_User.objects.all()
    ordering = all_user.order_by('dob')

    return render(request, 'index.html', {'ordering': ordering})

在tag.py

@register.filter
def calculate_year(year, loop_counter):
    try:
        year = int(2017)
    except ValueError:
        return None
    else:
        return str(year + (loop_counter // 2))

在一年中我使用tag.py

放置静态年份

如果用户选择2019我想只显示2019年的数据

1 个答案:

答案 0 :(得分:1)

据我所知,你在这里尝试做什么,即根据选择的年份过滤查询集 - 你开始的方式实际上不是这样做的。

您应该查看django-filter应用,这样可以轻松完成您在此处尝试的内容。

对于这种特定情况,您必须在filters.py内定义custom filter,然后在view中使用该过滤器。