Django获取模型数据的地方>别的

时间:2012-01-23 15:54:35

标签: python django models

使用Django我有这个模型:

class downloads(models.Model):
date = models.CharField(max_length=50)
ip = models.ForeignKey(IPaddress)
partnum = models.ForeignKey(partnum)
user = models.ForeignKey(userinfo)
filename = models.CharField(max_length=128)
issueId = models.ForeignKey(issueInfo)

我需要做的是从该表中获取日期为>的数据。日期1和< DATE2

我知道如果我使用的是PHP,我可以查询数据库以执行类似select * from downloads where date > date1 and date < date2的操作,这会给我一个迭代的数据集,如何使用Django进行此操作?

我将在黑暗中采取疯狂的刺,并问这是这样的:

d = downloads.objects.get('Where date > date1 and date < date2')

d = downloads.objects.get(date=>date1,date<=date2)

我是python和Django的新手(上周开始学习它......),任何帮助都会很棒。

由于

编辑:感谢快速回复 - 找出了我的新问题的答案

4 个答案:

答案 0 :(得分:2)

如果您使用的是Django ORM,请执行以下操作:

downloads = Downloads.objects.filter(date__range=(dat1, date2))

downloads = Downloads.objects.filter(date__gt=date1, date__lt=date2)

这将相应地过滤您的对象。 __gt表示“大于”,__lt表示“小于”。

阅读文档以进一步说明: https://docs.djangoproject.com/en/dev/ref/models/querysets/#filter

https://docs.djangoproject.com/en/dev/ref/models/querysets/#gt

答案 1 :(得分:2)

正确看看Django的文档,它们非常好而且全面。

在你的情况下你应该检查docs on querysets,因为你几乎不能直接写任何SQL,但通常使用Django的ORM。

在您的情况下,我会考虑使用range lookup

start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))

答案 2 :(得分:1)

看那个: https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups

d = Downloads.objects.filter(date__gt= dateParam1, date__lt= dateParam2 )

答案 3 :(得分:1)

创建两个日期时间对象,然后您可以执行以下操作:

Downloads.objects.filter(date__gt=startdate, date__lt=enddate)