Python Django-查询给定的行,其中一列不等于同一模型中的另一列

Python Django-查询给定的行,其中一列不等于同一模型中的另一列,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我的模型有3个字段 class Table(models.Model): in_time = models.DateTimeField(null=True, blank=True) actual_time = models.DateTimeField(null=True, blank=True) 我希望通过以下方式获取结果: select * from Table where in_time > '2013-12-31 00:00:00' and in_time !=

我的模型有3个字段

class Table(models.Model):
    in_time = models.DateTimeField(null=True, blank=True) 
    actual_time = models.DateTimeField(null=True, blank=True)
我希望通过以下方式获取结果:

select * from Table where in_time > '2013-12-31 00:00:00' and in_time != actual_time
有人能帮我完成这个吗

result = Table.objects.filter(in_time__gte = '2013-12-31 00:00:00')
~
运算符一起使用可生成否定(非)查询:

和同一型号上的参考字段:

Django提供了F表达式以允许进行此类比较。实例 F()充当对查询中模型字段的引用。这些 然后可以在查询筛选器中使用引用来比较 同一模型实例上的两个不同字段


您正在搜索的是:

解决方案

from django.db.models import F
from datetime import datetime

min_date = datetime(2013,12,31)
result = Table.objects.filter(in_time__gte=min_date).\
exclude(in_time__eq=F('actual_time'))

@ProfHase85使用排除过滤器和使用Q类过滤在性能上有什么区别?对不起,我的错,只是弄错了。没有明显的性能差异。仍然为一个查询初始化一个额外的类(如果有一种方法可以在没有Q类的情况下执行此操作)似乎很麻烦。(但这只是品味的问题)
from django.db.models import F
from datetime import datetime

min_date = datetime(2013,12,31)
result = Table.objects.filter(in_time__gte=min_date).\
exclude(in_time__eq=F('actual_time'))