Django查询是否可以使用自我

时间:2018-10-03 15:20:00

标签: django django-models

我想知道是否可以在Django模型中使用自我参数

MyModel中说我有date_fromdate_to

我希望选择date_from != date_to

的型号

如何实现?

我需要类似的东西

myvar = MyModel.objects.all().exclude(self.date_from=self.date_to)

1 个答案:

答案 0 :(得分:3)

是的,考虑到date_fromdate_to是场,您可以使用F-expression [Django-doc]来引用另一列:

from django.db.models import F

myvar = MyModel.objects.exclude(date_from=F('date_to'))

这里的F表达式包含一个字符串,并充当该字段的“代表”。因此,这里我们将获得所有MyModel,其中两列date_fromdate_to不同

因此,这将导致查询看起来或多或少像:

SELECT mymodel.*
FROM mymodel
WHERE NOT(date_from = date_to)

(Django通常会提及它明确选择的所有字段,这更多是为了表明过滤将在数据库级别进行)