如何创建一个Django查询集过滤器,比较同一模型中的两个日期字段

Car*_*ira 68 django django-queryset

试图在我的Solr索引中查询活动记录陈旧的查询.我想检查Activity.updated数据库中的日期是否大于Activity.added_toSolr_date同一记录的日期.

stale_activities_queryset = Activity.objects.filter(updated__gte = self.added_toSolr_date) 
Run Code Online (Sandbox Code Playgroud)

模型

class Activity(models.Model):
    # Last time entry / metric was updated in the Activity model database
    updated =  models.DateTimeField( verbose_name="CRUD date")
    # When it was added to Solr Index Date
    added_toSolr_date = models.DateTimeField(blank=True, null=True, verbose_name="Added to Solr Index Date")
Run Code Online (Sandbox Code Playgroud)

我引用了Django Query文档:https: //docs.djangoproject.com/en/1.4/ref/models/querysets/ 以及样本的单元测试:https: //github.com/django/django/blob/master/tests/ modeltests/or_lookups/tests.py

还在Stackoverflow上搜索了这里.所有示例都使用输入日期,而不是比较同一模型中的两个日期字段.

Yuj*_*ita 144

F对象.

from django.db.models import F
stale_activities = Activity.objects.filter(updated__gte=F('added_toSolr_date')) 
Run Code Online (Sandbox Code Playgroud)

  • @CarlosFerreira,通过多年每天使用django.我什么时候不能说. (6认同)
  • 如果其中一个日期为NULL,则似乎失败.使用Q检查null或比较仍然失败.即使它不会在MySQL,其他人看到这个? (2认同)