首页 > 解决方案 > 如何获取 Modelfield - datetime.now

问题描述

我一直在为日期的算术而苦苦挣扎。首先,我得到了两个 datetimeFields(模型)之间的日期,没关系。但我想得到 (To_do.end)-datetime.now()

我通过以下方式获得了 2 个日期字段的差异:
To_do.objects.annotate( delta=ExpressionWrapper(F('end') - F('start'), output_field=DurationField())

因为我一直在尝试使用 variable=datetime.now() 但仍然没有得到它

这就是我试图获得成功的测试

def index(request):
    myDate = datetime.now()
    days_left1 = To_do.objects.annotate(
        delta=ExpressionWrapper(F('end') - myDate, output_field=DurationField()))
    return render(request, 'ongoingtest.html', {
        'myDate': myDate,
        'days_left1': days_left1,
    })

这就是我为获得两个模型字段之间的差异所做的事情

class HomeView(ListView):
    template_name = 'ongoing.html'
    model = To_do

    def get_queryset(self):
        return To_do.objects.annotate(
            delta=ExpressionWrapper(F('end') - F('start'), output_field=DurationField())
        )

模型.py:

class To_do (models.Model):
    task = models.CharField(max_length=150)
    topic = models.CharField(max_length=150)
    how = models.TextField(max_length=600)
    start = models.DateTimeField(auto_now_add=True)
    end = models.DateTimeField(blank=False)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.task

只需获取 To_do.end - datetime.now()

标签: pythondjangopython-3.xdjango-templatesdjango-views

解决方案


使用Now数据库功能:https ://docs.djangoproject.com/en/2.2/ref/models/database-functions/#now

from django.db.models.functions import Now

def index(request):
    myDate = datetime.now()
    days_left1 = To_do.objects.annotate(
        delta=ExpressionWrapper(F('end') - Now(), output_field=DurationField()))
    return render(request, 'ongoingtest.html', {
        'myDate': myDate,
        'days_left1': days_left1,
    })

推荐阅读