我正在尝试使用整数变量查找所有 Django 对象,其中该变量位于两个 Django 模型字段之间。我知道使用 __range() 通常是为了查找模型字段是否在两个变量之间,但我需要相反的方式。
模型:
class Location(models.Model):
location_start = models.IntegerField()
location_end = models.IntegerField()
sample_id = models.ForeignKey(Sample,
on_delete=models.CASCADE, db_column='sample_id')
View (不起作用):
location_query = 1276112
loc_obj = Location.objects.filter(
sample_id=sample_obj,
location_query__range(location_start, location_end)
)
原始 SQL:
SELECT *
FROM location
WHERE sample_id=12
AND 1276112 BETWEEN location_start AND location_end
有没有更简单的方法来做到这一点而无需循环遍历对象?
最佳答案
如果我对你的理解是正确的,你想过滤所有 Location
带有 obj.location_start < location_query < obj.location_end
的对象.过滤语句看起来像这样:
loc_obj = Location.objects.filter(
sample_id=sample_obj,
location_start__lt=location_query,
location_end__gt=location_query)
)
如果您想要一个包含范围 ( <=
),请使用 location_start__lte
和 location_end__gt=location_query
.
关于python - Django ORM - 找到变量适合一系列模型字段的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289134/