Python 丢弃Django queryset中的旧元素
我的数据库中有一个元素列表,每个元素都有自己的datetime字段。我想丢弃比今天更古老的元素,这意味着我只会看到未来的元素 这是我当前的代码: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=
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())