2016-11-11 3 views
-1

Помощь будет оценена. Независимо от того, что я ищу, я нахожу все остальное, кроме того, что мне нужно. wwwaaah ....Просмотр Django DateField Формат головной боли

У меня есть DateField на моем шаблоне, что мне нужно получить указанную пользователем дату для API, который я создаю. Моя проблема в том, что мне это нужно в определенном формате. У меня есть googled и попытка различных параметров, но не могу работать. Формат даты по умолчанию Django - yyyy-mm-dd, но из-за того, как работает наш API, мне нужен yyyy/mm/dd.

спецификации: -django1.5 -python27

Что работает ....

views.py

class AddForm(forms.Form): 
    new_timestamp = forms.DateField(required=False) 

class TimeView(View): 

    def post(self, request) 

     time_content = AddForm(request.POST) 
     content['client_time'] = time_content 

     if time_content.is_valid(): 
      new_timestamp = time_content.cleaned_data["new_timestamp"] 

     ... 
     ...blah blah 

шаблона:

<div id="div_date_section">Date: <input type="text" name="new_timestamp"> YYYY/MM/DD </div> 

дает мне следующий результат (захваченный в моих журналах отладки):

2016-11-10 23:46:48,520: DEBUG: views.py:296 timestamp: 2016-01-01 00:00:00-08:00 
2016-11-10 23:46:48,520: DEBUG: views.py:297 timestamp type: <type 'datetime.datetime'> 

То, что я хотел бы это строка в формате: 2016/01/01.

Я пробовал различные методы, которые не имеют никакого эффекта. Как уже упоминалось, я работаю в Интернете в течение нескольких часов, и одна из вещей, которые я нашел, была следующей, однако это делает мой код неработоспособным. У меня нет абсолютно никакой ошибки для входа в систему или консоли, мой код просто ломается, жалуясь на что-то, не связанное с несколькими строками кода позже в моем коде.

new_timestamp = forms.DateField(widget=forms.widgets.DateInput(format="%Y/%m/%d"),required=False) 

Может кто-нибудь посоветуете пожалуйста? Заранее спасибо.

+0

Вы должны показать эту предположительно несвязанную ошибку. –

+0

Кроме того, из вашего вопроса неясно: вы говорите о формате, который вы вводите в форму, это формат, который вы выбрали? –

+0

Привет, Даниэль. извините за это, я имею в виду формат, передаваемый в пользовательский ввод формы. если я притворяюсь пользователем и ударом в 2016/01/01, вы можете видеть из моего журнала отладки, что формат 2016-01-01 передается через модуль DateField по умолчанию. Как-то, как нужно переопределить это в этом формате 2016/01/01, который не является стандартом джанго. Я не вставлял ошибку, так как я не хотел, чтобы люди фокусировались на ней. У меня есть форма «if».is_valid() ", который возвращает несколько dicts.Одним из них является" sku_found ", потому что if действительно не работает, ошибка показывает, что sku_found blah blah ... но, конечно, это так ... – New2Python

ответ

0

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

class AddForm(forms.Form): 
    new_timestamp = forms.DateField(required=False) 

class TimeView(View): 
def post(self, request) 

    time_content = AddForm(request.POST) 
    content['client_time'] = time_content 

    if time_content.is_valid(): 
     new_timestamp = time_content.cleaned_data["new_timestamp"] 

    ... 
    ... 
     results = some_def(new_timestamp) 
    ... 
    ... 

def some_def: 
    ... 
    ... 
    # the new line that gave me what i needed 
    epoch_time = time.mktime(new_timestamp.timetuple()) 
    ... 
    ... 
    return epoch_time 

Я понимаю, что не хватает контекст здесь, но, надеюсь, это достаточно ясно, как передать пользовательский ввод через DateField на шаблон и конвертировать. Этот пример предназначен для преобразования чего-то типа 2016-01-01 в формат времени в эпоху.

Только примечание, во избежание моей первоначальной проблемы формат даты по умолчанию - yyyy-mm-dd, и если вы используете yyyy/mm/dd без каких-либо виджетов или манипуляций с форматами, попробуйте с .is_valid().

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