Джанго получает данные модели где-то> что-то еще - PullRequest
0 голосов
/ 23 января 2012

С 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 и <дата2 </p>

Я знаю, что если бы я использовал 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 ]

2 голосов
/ 23 января 2012

Внимательно посмотрите на документы Джанго, они действительно хороши и полны.

В вашем случае вам следует проверить документы на наборах запросов , так как вы вряд ли пишете SQL напрямую, но обычно используете ORM Django.

В вашем случае я бы рассмотрел использование 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 голосов
/ 23 января 2012

Если вы используете 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 голос
/ 23 января 2012

Создайте два объекта даты и времени, а затем вы можете сделать:

Downloads.objects.filter(date__gt=startdate, date__lt=enddate)
1 голос
/ 23 января 2012

Посмотрите на это: https://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups

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