django db lookup для даты и времени - PullRequest
0 голосов
/ 03 ноября 2010

Я пытаюсь отфильтровать записи базы данных по их дате и времени:

models.py:

from django.db import models


class ContestEvent(models.Model):
    year = models.DateTimeField()
    month = models.DateTimeField()

На мой взгляд, я определяю календарь функций:

def calendar(request, pYear, pMonth):
    """
    Show calendar of events for specified month and year
    """
    lYear = int(pYear)
    lMonth = int(pMonth)
    lCalendarFromMonth = datetime(lYear, lMonth, 1)
    lCalendarToMonth = datetime(lYear, lMonth, monthrange(lYear, lMonth)[1])
    my_workouts = ContestEvent.objects.filter(id__year=lCalendarFromMonth, id__month=lCalendarToMonth)
    lCalendar = html_calendar.WorkoutCalendar(my_workouts).formatmonth(lYear, lMonth)

Затем я получил следующую ошибку:

Request Method:   GET
Request URL:  http://127.0.0.1:8000/htmlcalendar/
Exception Type:  TypeError
Exception Value:  

int() argument must be a string or a number, not 'datetime.datetime'

Exception Location:  C:\Python25\lib\site-packages\django\db\models\fields\__init__.py in get_db_prep_lookup, line 225

Ошибка та же, когда я определяю свою модель с помощью year = models.IntegerField() вместо year = models.DateTimeField()

Что здесь не так.Я начинающий Джанго.Заранее спасибо !!

1 Ответ

0 голосов
/ 03 ноября 2010

Я бы сказал, что если вам нужны месяц и год, тогда используйте IntegerField, и когда вы это сделаете, вам больше не нужно создавать объекты даты и времени для передачи в ваш фильтр. Попробуйте что-то вроде этого:

class ContestEvent(models.Model):
    year = models.IntegerField()
    month = models.IntegerField()

def calendar(request, pYear, pMonth):
    """
    Show calendar of events for specified month and year
    """
    lYear = int(pYear)
    lMonth = int(pMonth)
    my_workouts = ContestEvent.objects.filter(year=lYear, month=lMonth)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...