Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 丢弃Django queryset中的旧元素_Python_Django_Datetime - Fatal编程技术网

Python 丢弃Django queryset中的旧元素

Python 丢弃Django queryset中的旧元素,python,django,datetime,Python,Django,Datetime,我的数据库中有一个元素列表,每个元素都有自己的datetime字段。我想丢弃比今天更古老的元素,这意味着我只会看到未来的元素 这是我当前的代码: def get_dates_approved(request): user = request.user alreadyRated = [x.date.id for x in Ratings.objects.filter(rator=user)] dates = Dating.objects.filter((Q(creator=

我的数据库中有一个元素列表,每个元素都有自己的datetime字段。我想丢弃比今天更古老的元素,这意味着我只会看到未来的元素

这是我当前的代码:

def get_dates_approved(request):
    user = request.user
    alreadyRated = [x.date.id for x in Ratings.objects.filter(rator=user)]
    dates = Dating.objects.filter((Q(creator=user) | Q(assignee=user)) & Q(accepted=True)) \
                      .exclude(id__in=alreadyRated)
    return dates
定义日期的字段是:

finalDate = models.DateTimeField(default=datetime.now)

Django queryset具有字段查找功能

从Django文档中

字段查找是指定SQLWHERE子句内容的方式。它们被指定为QuerySet方法filter()、exclude()和get()的关键字参数

有许多内置查找可用,如
exact
iexact
contains
gt
gte
lt
lte
等。有关更多信息,请参阅

回答你的问题

dates = Dating.objects.filter((Q(creator=user) | Q(assignee=user)) & Q(accepted=True)) \
                  .exclude(id__in=alreadyRated)
应该是

dates = Dating.objects.filter((Q(creator=user) | Q(assignee=user)) & Q(accepted=True)) \
                  .exclude(id__in=alreadyRated, finalDate__lt=datetime.today())
所以你的函数应该是

from datetime import datetime

def get_dates_approved(request):
    user = request.user
    alreadyRated = [x.date.id for x in Ratings.objects.filter(rator=user)]
    dates = Dating.objects.filter((Q(creator=user) | Q(assignee=user)) & Q(accepted=True)) \
                      .exclude(id__in=alreadyRated, finalDate__lt=datetime.today())