gpt4 book ai didi

如果日期早于 10 天,Django 会显示特定文本

转载 作者:行者123 更新时间:2023-12-01 01:22:40 26 4
gpt4 key购买 nike

我正在为一位客户开发一个项目,如果用户加入日期超过十天,该客户希望在表格中显示“提醒”。我不想使用过滤器只返回满足查询的对象,因为我想显示表中的所有成员。我正在使用 Django 2.x 和 python 3.6。任何帮助将不胜感激。

模型.py:

class Member(models.Model):
name = models.CharField('Name', max_length=50,)
join_date = models.DateField('Join Date', auto_now=False, auto_now_add=False,)

views.py:

def memberList(request, template_name='members/memberList.html'):
member = Member.objects.all()
data = {}
data['object_list'] = member
return render(request, template_name, data)

和我的模板 memberList.html:

{% extends "base.html" %}
{% load static %}
{% block content %}
<table>
<thead>
<tr>
<th>Name</th>
<th>Join Date</th>
<th>Alert</th>
</tr>
</thead>
<tbody>
{% for member in object_list %}
<tr>
<td>{{ member.name }}</td>
<td>{{ member.join_date }}</td>
<td> **??**</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}

最佳答案

至少有两种方法可以实现这一点

方法-查找方法

编辑:这一项的功劳归于olinox14 , 我没有看到 his answer在编辑我的时。

首先,确保您了解 official documentation 中所写的内容关于从模板中访问方法调用

你会发现对你的事业最有趣的是:

(...) And of course you can easily access methods you’ve explicitly defined on your own models

牢记这一点,我鼓励您查看 olinox14's answer .

自定义模板标签方式

您可以使用 Django 模板的 if 语句并使用自定义模板标签来计算实际结果。它应该看起来像

from django import template
import datetime


register = template.Library()


@register.filter(expects_localtime=True)
def is_older_than_ten_days(value):
if isinstance(value, datetime.datetime):
value = value.date()
delta = value - datetime.date.today()
return delta.days > 10

然后在你的模板中这样使用它:

(...)
{% for member in object_list %}
<tr>
<td>{{ member.name }}</td>
<td>{{ member.join_date }}</td>
<td>{% if member.join_date|is_older_than_ten_days %}YOUR INFO
{% else %}something else{% endif %}</td>
</tr>
{% endfor %}
(...)

请引用this answer了解更多详情。

关于如果日期早于 10 天,Django 会显示特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54330831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com