我想知道是否可以在Django模型中使用自我参数
在MyModel
中说我有date_from
和date_to
我希望选择date_from != date_to
如何实现?
我需要类似的东西
myvar = MyModel.objects.all().exclude(self.date_from=self.date_to)
答案 0 :(得分:3)
是的,考虑到date_from
和date_to
是场,您可以使用F
-expression [Django-doc]来引用另一列:
from django.db.models import F
myvar = MyModel.objects.exclude(date_from=F('date_to'))
这里的F
表达式包含一个字符串,并充当该字段的“代表”。因此,这里我们将获得所有MyModel
,其中两列date_from
和date_to
是不同。
因此,这将导致查询看起来或多或少像:
SELECT mymodel.*
FROM mymodel
WHERE NOT(date_from = date_to)
(Django通常会提及它明确选择的所有字段,这更多是为了表明过滤将在数据库级别进行)