我有一个模型,它有 2 个字段,例如,
pickup_station_id = models.IntegerField(null=True)
drop_station_id = models.IntegerField(null=True)
我想在管理员中使用一个过滤器,它可以根据以下条件过滤查询集
- 上车和下车 ID 不同
- 上车和下车 ID 相同
如何根据这些条件获取查询集?
我的意思是,像这样,
Mymodel.objects.filter(pickup_station_id==drop_station_id)
Mymodel.objects.filter(pickup_station_id!=drop_station_id)
最佳答案
您可以引用带有 F
-expression [Django-doc] 的f字段 .所以我们可以这样写:
from django.db.models import <b>F</b>
Mymodel.objects.filter(pickup_station_id=<b>F('drop_station_id')</b>)
我们可以使用 Q
-object [Django-doc] 来否定一个q查询 :
from django.db.models import F, <b>Q</b>
Mymodel.objects.filter(<b>~Q(</b>pickup_station_id=F('drop_station_id')<b>)</b>)
这里的波浪号 (~
) 表示我们否定 Q
对象表示的条件。
关于python - django:当 2 个字段具有相同值时过滤查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476274/