尝试在我的Solr索引中获取活动记录陈旧的查询。
我想检查数据库中的Activity.updated
日期是否大于同一记录的Activity.added_toSolr_date
。
stale_activities_queryset = Activity.objects.filter(updated__gte = self.added_toSolr_date)
模型
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")
我引用了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上搜索。所有示例都使用输入日期,而不是比较同一模型中的两个日期字段。
答案 0 :(得分:127)
from django.db.models import F
stale_activities = Activity.objects.filter(updated__gte=F('added_toSolr_date'))
答案 1 :(得分:1)
遗憾的是,Yuji Tomita的解决方案并没有起作用。
考虑以下模型:
class list(models.Model):
text = models.CharField(max_length=140)
created = models.DateTimeField()
modified = models.DateTimeField()
查询集:
my_list = todolist.objects.order_by('created').filter(created__gte=F('modified'))
模板:
{% if my_list %}
{% for list in my_list %}
{{ list.text}}
{% endfor %}
{% else %}
<p>there is no list</p>
{% endif %}
最后我得到一个空列表,但我知道,这是不正确的。我还在模板中使用了以下内容(没有查询集过滤器):
{% if list.created|date:'d m y h:i:s' == list.modified|date:'d m y h:i:s' %}
虽然有效但我更愿意看到更优雅的解决方案。