2014-12-02 2 views
4

Я пытаюсь написать тест, чтобы зарегистрировать пользователя. Я не могу получить форму для проверки, потому что я не могу понять, как отправить действительную дату в форму. Вот код обижая:Значения даты POST в django testCase

class AccountManagementTest(TestCase): 
    def test_signup(self): 
     response = self.client.post(reverse('register'), { 
      'first_name': 'Gandalf', 
      'last_name': 'TheGrey', 
      'email': '[email protected]', 
      'password1': 'SauronSucks', 
      'password2': 'SauronSucks', 
      'birthdate': datetime(1956, 1, 1), 
      'tos': True}) 

я могу вывести response.content после этого и ошибки в форме "Пожалуйста, введите правильную дату. Я не переопределил метод clean для birthdate в форме. Вот объявление поля датирования по форме:

birthdate = forms.DateField(
     widget=SelectDateWidget(
      years=range(this_year-90, this_year-12)[::-1]), 
      required=True,) 

Как я могу отправить его действительную дату?

ответ

1

You необходимо пройти строковое представление в о дате, которая соответствует одному из умолчанию input_formats:

['%Y-%m-%d',  # '2006-10-25' 
'%m/%d/%Y',  # '10/25/2006' 
'%m/%d/%y']  # '10/25/06' 

В вашем случае это может быть, например:

'birthdate': '1956-01-01' 
0

В Python datetime и date не являются тем же объектом. datetime содержит информацию, такую ​​как часы, минуты, секунды.

Посмотрите здесь: https://docs.python.org/2/library/datetime.html

если дата рождения является DateField в Django, вы должны написать:

'birthdate': date(1956, 1, 1) (не забудьте импортировать datetime.date для этого)

Смежные вопросы