如何使用filter()函数获取范围之间的数据?

时间:2017-09-25 10:41:17

标签: python django django-models django-views

我写下了这样的模型:

model.py

from __future__ import unicode_literals
from django.db import models

# Create your models here.
class  SequenceDetails(models.Model):

    IDs = models.CharField(max_length=30)
    country = models.CharField(max_length=30)
    year = models.IntegerField(max_length=30)

    def __unicode__(self):

        return self.IDs 

要从数据库中获取数据,我已写下如下查询:

SequenceDetails.objects.all().filter(country='india').filter(year='2002')

正在返回预期结果,但我想进一步根据国家和年份范围过滤掉数据。我写下了这样的查询集。

SequenceDetails.objects.all().filter(country='india').filter(year__range =['2002','2005'])

但它现在正在起作用并抛出错误,如下所示:

SyntaxError: invalid syntax

我如何实现这一点谢谢

2 个答案:

答案 0 :(得分:0)

尝试以下解决方案

SequenceDetails.objects.filter(country='india', year__lte=2005, year__gte=2002])

参考gte/lte django doc。

希望这有帮助。

答案 1 :(得分:-1)

这里的答案

SequenceDetails.objects.all().filter(country='india',year__in=[2002,2000])

年份是整数字段,因此您需要在关键字

中使用