如何在我的任务列表中过滤掉创建日期的任务
How can I filter out date created task in my task list
我正在尝试在 HTML 中显示我列表中的 date-created 个任务。
Models.py:
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
这是我在 Django 中的 HTML:
<div class="task-items wrapper">
{% for task in tasks %}
<div class="task-wrapper">
{% if task.complete %}
<div class="task-title">
<div class="task-complete-icon"></div>
<i><s><a class="task" href="{% url 'update-task' task.id %}">{{task}}</a></s></i>
<br></br>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% else %}
<div class="task-title">
<div class="task-incomplete-icon"></div>
<a href="{% url 'update-task' task.id %}">{{task}}</a>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% endif %}
</div>
<div class="emptylist">
{% empty %}
<h3 style="text-align: center; line-height: 3;">No task in list! Let's create your task</h3>
</div>
{% endfor %}
</div>
例如,对于我创建的每个任务,它必须显示标题和创建日期,完成或未完成都无关紧要。我只能显示标题,我该怎么做才能显示日期?
created = models.DateTimeField(auto_now_add=True)
请删除 auto_now_add=True,然后您将在模板中获得日期时间选择器。
<div class="task-items wrapper">
{% for task in tasks %}
<div class="task-wrapper">
{% if task.complete %}
<div class="task-title">
<div class="task-complete-icon"></div>
<i><s><a class="task" href="{% url 'update-task' task.id %}">{{task.title}}-{{task.created}}</a></s></i>
<br></br>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% else %}
<div class="task-title">
<div class="task-incomplete-icon"></div>
<a href="{% url 'update-task' task.id %}">{{task.title}}-{{task.created}}</a>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% endif %}
</div>
<div class="emptylist">
{% empty %}
<h3 style="text-align: center; line-height: 3;">No task in list! Let's create your task</h3>
</div>
{% endfor %}
</div>
目前,您正在显示 Task
模型的字符串表示形式,我假设它已设置为显示您的任务标题。你需要
- 分别显示标题和日期
- 将您的
Task
表示更改为 return 格式为标题和时间的字符串
我更喜欢 (1),因为它给了你更多的控制权。如果您想使用 (2),则需要添加 __str__
或 __repr__
方法。
我推荐的方法是在模板上使用 «created» 变量来显示日期。
例如,我有一个名为 «post_created_on» 的模型,
class Profile(models.Model):
post_created_on = models.DateTimeField()
我想在我的模板上显示它。
<h5>This is a post.</h5>
那么我只是在您的模板上使用我的 «post_created_on» 变量来显示日期。
<h5>This is a post. Created on: {{ task.post_created_on }}</h5>
您可以直接使用DateField()django-doc。但是如果你已经定义了 DateTimeField
那么你可以使用 @property
装饰器并以 1-7-2022
格式显示 date
,如图所示。
在您的 Task
模型中创建 @property
,如下所示:
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
@property
def get_only_date(self):
date_object = self.created
year = date_object.year
month = date_object.month
day = date_object.day
return f"{day}-{month}-{year}"
然后,在 template
文件中的任意位置使用 属性 循环:
{% for task in tasks %}
{{task.get_only_date}}
{% endfor %}
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
{% for task in tasks %}
{{task.created.date}}
{% endfor %}
您可以使用这种方式而无需编写任何其他属性。
我正在尝试在 HTML 中显示我列表中的 date-created 个任务。
Models.py:
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
这是我在 Django 中的 HTML:
<div class="task-items wrapper">
{% for task in tasks %}
<div class="task-wrapper">
{% if task.complete %}
<div class="task-title">
<div class="task-complete-icon"></div>
<i><s><a class="task" href="{% url 'update-task' task.id %}">{{task}}</a></s></i>
<br></br>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% else %}
<div class="task-title">
<div class="task-incomplete-icon"></div>
<a href="{% url 'update-task' task.id %}">{{task}}</a>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% endif %}
</div>
<div class="emptylist">
{% empty %}
<h3 style="text-align: center; line-height: 3;">No task in list! Let's create your task</h3>
</div>
{% endfor %}
</div>
例如,对于我创建的每个任务,它必须显示标题和创建日期,完成或未完成都无关紧要。我只能显示标题,我该怎么做才能显示日期?
created = models.DateTimeField(auto_now_add=True)
请删除 auto_now_add=True,然后您将在模板中获得日期时间选择器。
<div class="task-items wrapper">
{% for task in tasks %}
<div class="task-wrapper">
{% if task.complete %}
<div class="task-title">
<div class="task-complete-icon"></div>
<i><s><a class="task" href="{% url 'update-task' task.id %}">{{task.title}}-{{task.created}}</a></s></i>
<br></br>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% else %}
<div class="task-title">
<div class="task-incomplete-icon"></div>
<a href="{% url 'update-task' task.id %}">{{task.title}}-{{task.created}}</a>
</div>
<a class="delete-link" href="{% url 'delete-task' task.id %}"><i class="fa-solid fa-delete-left"></i></a>
{% endif %}
</div>
<div class="emptylist">
{% empty %}
<h3 style="text-align: center; line-height: 3;">No task in list! Let's create your task</h3>
</div>
{% endfor %}
</div>
目前,您正在显示 Task
模型的字符串表示形式,我假设它已设置为显示您的任务标题。你需要
- 分别显示标题和日期
- 将您的
Task
表示更改为 return 格式为标题和时间的字符串
我更喜欢 (1),因为它给了你更多的控制权。如果您想使用 (2),则需要添加 __str__
或 __repr__
方法。
我推荐的方法是在模板上使用 «created» 变量来显示日期。
例如,我有一个名为 «post_created_on» 的模型,
class Profile(models.Model):
post_created_on = models.DateTimeField()
我想在我的模板上显示它。
<h5>This is a post.</h5>
那么我只是在您的模板上使用我的 «post_created_on» 变量来显示日期。
<h5>This is a post. Created on: {{ task.post_created_on }}</h5>
您可以直接使用DateField()django-doc。但是如果你已经定义了 DateTimeField
那么你可以使用 @property
装饰器并以 1-7-2022
格式显示 date
,如图所示。
在您的 Task
模型中创建 @property
,如下所示:
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
@property
def get_only_date(self):
date_object = self.created
year = date_object.year
month = date_object.month
day = date_object.day
return f"{day}-{month}-{year}"
然后,在 template
文件中的任意位置使用 属性 循环:
{% for task in tasks %}
{{task.get_only_date}}
{% endfor %}
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=1000, blank=True, null=True)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
{% for task in tasks %}
{{task.created.date}}
{% endfor %}
您可以使用这种方式而无需编写任何其他属性。