python - django:当 2 个字段具有相同值时过滤查询集

标签 python django django-models

我有一个模型,它有 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/

相关文章:

python - 如何根据模型实例中的值有条件地更改 django 管理表单?

django - robots.txt 的 URL 中的尾部斜杠

python - Django - 覆盖模型保存()

python - Django 通过外键分面子类别

python - 如何在 Django REST Framework 中序列化继承模型

python - 无法在 django 1.8 中使用自定义用户模型创建 super 用户

python - 为什么调用 cv2.VideoCapture() 会改变 v4l 相机的像素格式?

python - keras中的反向词嵌入 - python

python - 如何修复 Pysal 中 LISA 簇 map 的颜色

python - 字典的平方值