2016-04-30 1 views
0

Я очень новичок в python/django, и я воспользовался вышеуказанной ошибкой. Я прочитал несколько сообщений, но ничего не помогает. В моем приложении пользователь получает напоминание от трех вариантов, и если он выбирает третий вариант «Выбрать дни», он набирает количество дней в поле reminderx. Итак, вот моя модель:неподдерживаемый тип для timedelta days компонент: NoneType

class Event(models.Model): 

    # some other fields 

    reminder=models.IntegerField('Reminder', default=0, choices=REMINDER_STATUS) 
    reminderx = models.IntegerField('Days',blank=True, null=True) 

и вот мой код на мой взгляд:

today = date.today() 
    a = Event.objects.filter(del_f=0)  
    is_today = [] 
    is_week=[] 
    is_custom =[] 

    for i in a: 
     print('i:',i) 
     reminder = i.reminder 

     if reminder == 1 : 
      rtoday = i.start_date.date() - timedelta(days=1) 
      print('rtoday:',rtoday) 
      if rtoday == today: 
       is_today.append(i) 
     if reminder == 2 : 
      rweek = i.start_date.date() - timedelta(days=7) 
      if rweek == today: 
       is_week.append(i)    

     if reminder == 3 : 
      reminderx = i.reminderx 
      rcustom = i.start_date.date() - datetime.timedelta(days= reminderx) 
      if rcustom == today: 
       is_custom.append(i) 

    context['today'] = is_today 
    context['week'] = is_week 
    context['custom'] = is_custom 

    return context 

заранее спасибо за вашу помощь !!

+0

Какую ошибку вы получили? – EbraHim

+0

Я удалил свой ответ, так как он не отвечает на ваш вопрос. Если вы набрали номер в форме, вам нужно обработать форму здесь хорошо. – AKS

+0

Во-первых, спасибо за вашу помощь. Я печатаю форму. Мой код выше в моем ListView в моем def get_context_data. Он отлично работает с другими моими выборами. –

ответ

1

Ошибка ясно указывает, что параметр days равен timedelta(): None (он ожидает int). В своем коде, у вас есть только одна строка, где вы звоните timedelta() с переменной для days:

rcustom = i.start_date.date() - datetime.timedelta(days= reminderx) 

Таким образом, все это означает, что переменная reminderx является None. И если вы посмотрите на определение модели, reminderx может быть пустым. Вам либо необходимо, чтобы модель не принимала нули или имела значение по умолчанию при использовании этого атрибута:

reminderx = i.reminderx or 1 # one day if nothing is specified 
rcustom = i.start_date.date() - datetime.timedelta(days= reminderx)