【问题标题】:How to get Todo items with today as deadline如何以今天为截止日期获取待办事项
【发布时间】:2022-01-13 12:27:12
【问题描述】:

所以我仍在创建我的待办事项应用程序,我想渲染所有以今天为截止日期的项目,以提醒用户有待处理的任务。

models.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class ToDo(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    todo = models.CharField(max_length=50)
    description = models.TextField(max_length=200, blank=True)
    created = models.DateField(auto_now=True)
    end = models.DateField()
    start = models.DateField()
    completed = models.BooleanField(default=False)

    def __str__(self):
        return f'{self.owner} - {self.todo}'

views.py

def index(request):
    activities = ToDo.objects.all()
    today = ToDo.objects.get(end=datetime.date.today)
    todo = ToDo.objects.count()
    complete = ToDo.objects.filter(completed=True).count()
    percent = complete * 100 // todo 
    if request.method == 'POST':
        try:
            search = request.POST.get('todo')
            activities = ToDo.objects.filter(todo__icontains=search)
            
        except:
            search = request.POST.get('end')
            activities = ToDo.objects.filter(end=search)

    context = {
        'activities' : activities,
        'percent' : percent,
        'today' : today,
    }
    return render(request, 'home.html', context)

我在 views.py 中导入了 DateTime

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    试试这个

    from django.utils import timezone
    
    def index(request):
        today = timezone.localtime(timezone.now())
    
        deadline_today = ToDo.objects.filter(
            end__year=today.year,
            end__month=today.month,
            end__day=today.day
        )
    
        context = {
            ...
            'today' : deadline_today ,
        }
    

    【讨论】:

      【解决方案2】:

      你快到了!

      today = ToDo.objects.get(end=datetime.date.today)
      

      是问题所在。 get() 用于获取单行,您需要由filter 完成的所有匹配行。您还发送函数today,而不是使用today() 调用它。

      这样做:

      today = ToDo.objects.filter(end=date.today())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-03
        • 1970-01-01
        • 2017-04-28
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        相关资源
        最近更新 更多