丢弃Django querys中的旧元素

2024-10-04 05:27:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据库中有一个元素列表,每个元素都有自己的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)

Tags: 代码inid数据库元素列表getdatetime
1条回答
网友
1楼 · 发布于 2024-10-04 05:27:41

Django queryset有字段查找。你知道吗

从Django医生那里

Field lookups are how you specify the meat of an SQL WHERE clause. They’re specified as keyword arguments to the QuerySet methods filter(), exclude() and get().

有许多内置查找可用,例如exactiexactcontainsgtgteltlte等等。有关详细信息,请参阅Django queryset field lookups。你知道吗

回答你的问题

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())

相关问题 更多 >