比较Datetime和datetimefield django

时间:2020-08-27 09:16:32

标签: python django datetime django-models django-database

我正在尝试将存储在项目中的datetimefield与datetime.date对象进行比较。

这是views.py中的代码,我在其中创建datetime.date对象的实例,并从数据库中选择该项目的datetimefield并尝试进行比较。

def Comapare(request,pk):
    Item = item.objects.get(id=pk)
    date1 = request.GET.get('date1')
    date2 = request.GET.get('date2')

    if date1 and date2:
        if ',' in date1:
            date1 = list(date1.split(','))
        else:
            date1 = list(date1.split(' '))
        if ',' in date2:
            date2 = list(date2.split(','))
        else:
            date2 = list(date2.split(' '))
        
        date1 = datetime.date(int(date1[0]), int(date1[1]), int(date1[2]))
        date2 = datetime.date(int(date2[0]), int(date2[1]), int(date2[2]))
        was_date1_before = date1 < date2
        if not date1 < date2:
            date1, date2 = date2, date1 

        if date1 < item.date_created:
            date1 = ''
        
        context = {
            'date1':date1,
            'date2':date2,
            'was_date1_before': was_date1_before,
            'item': Item,
        }
    else:
        context = {}

    return render(request, 'Inventory_Management/getDate.html', context)

当我在上面的示例中尝试比较它们时,出现以下错误:'datetime.date'和'DeferredAttribute'实例之间不支持'<' 我试图在互联网上搜索,但并没有真正找到任何帮助。

我从下面的html文件中获取日期

{% extends 'Inventory_Management/layout.html' %} {% block body %}
<form>
    <div class="form-group">
        <label for="date1">Date 1</label>
        <input type="text" class="form-control" id="date1" name="date1" placeholder="Enter Date 1..">
    </div>
    <div class="form-group">
        <label for="date2">Date 2</label>
        <input type="text" class="form-control" id="date2" name="date2" placeholder="Enter Date 2..">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>
{{ date1 }} <br> {{ date2 }} <br> {{ was_date1_before }} <br> Date: {{ item.date_created|date:"M D, Y" }} {% endblock %}

我尝试比较datetime.date对象和html中的fied,但这没有用。 我真的需要这个工作,非常感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

我通过将datetime.date对象转换为字符串如下来解决了这个问题:

date1.strftime('%Y-%m-%d %H:%M')

然后在if语句中将b = my date1替换为那之后,它就可以了!

相关问题