【问题标题】:i want to display only selected year data in Django我想在 Django 中只显示选定的年份数据
【发布时间】:2018-07-09 22:14:11
【问题描述】:

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

在我的 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>

在 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 年的数据

【问题讨论】:

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


    【解决方案1】:

    据我了解,您在这里尝试做什么,即根据所选年份过滤查询集 - 您开始的方式并不是真正的方式。

    您应该查看django-filter 应用程序,它可以很容易地完成您在此处尝试的操作。

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

    【讨论】:

    • 但是在我的表格中,年份是静态的。它不是来自数据库
    • 没关系 - 您可以使用带有年份下拉列表的表单并将该表单提交到相同的 index 视图,看起来像这样:def index(request, *args, **kwargs): your_filter = YourFilter(request.GET) ordering = your_filter.qs @987654329 @
    猜你喜欢
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    相关资源
    最近更新 更多