使用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的新手(上周开始学习它......),任何帮助都会很棒。
由于
编辑:感谢快速回复 - 找出了我的新问题的答案
答案 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)